2012-04-24 4 views
1

私はbillede.rbを持っている:クラスを呼び出す、またはクラスをアクティブにする方法は?私のlibフォルダに

class Billede 
    require 'RMagick' 
    #some code that creates a watermark for a image 
    image.write(out) 
end 

は、どのように私はクラスをアクティブ/呼ぶのですか?それをRakeタスクに変更する唯一の方法はありますか?

+0

私の質問は何か疑問がありますか? –

+1

はい、疑問があります。私は個人的にあなたが意味することを知らない。あなたは何をしたいのですか?なぜそのクラスのすべてが 'クラス 'の中にあるのですか? – Phrogz

+0

seconded @Phrogz – Josh

答えて

2

コード 'inside a class'は他のコードと同じように実行されます。あなたはRubyはこのようなファイルがある場合:

puts "Hello from #{self}" 
class Foo 
    puts "Hello from #{self}" 
end 

を、あなたが(どちらかruby foo.rbを経由して、コマンドラインまたはスクリプトでrequire "./foo"またはload "foo.rb"上の)ファイルを実行するには、あなたは出力が表示されます。

Fooの

からメイン
こんにちはから

こんにちは、あなたはその後、IRBまたはRなどのREPLから呼び出すことができます「は、何かをする」ユーティリティをロードする場合不振の解決策コンソールは、その後、次の操作を行います。

module MyStuff 
    def self.do_it 
    # your code here 
    end 
end 

あなたはrequire "./mystuff"はコードをロードすることができ、あなたが実行する準備ができたら、それはあなたが推測することとして、あなたはまた、メソッドを作成することができ、MyStuff.do_it

を入力し、引数を受け入れる

あなたは(即時副作用で)他人に含めることのできるファイルを定義するのではなく、ファイルが単独で実行されるたびにも、「その事はない」、あなたはこれを行うことができた場合:

module MyStuff 
    def self.run! 
    # Go 
    end 
end 

MyStuff.run! if __FILE__==$0 

requireまたはloadの場合、run!メソッドは呼び出されませんが、コマンドラインからruby mystuff.rbと入力すると、このファイルが表示されます。

+0

ありがとう、ちょうど私が探していた答え。レーキタスクを作成するよりも優れた解決策であると考えてください。もしあなたがちょうどいくつかのコードをテストするつもりです。 –

5

クラスを直接呼び出すことはできません。そのクラスのメソッドを呼び出す必要があります。たとえば:

class Billede 
    def self.foobar 
    # some kind of code here... 
    end 
end 

次に、あなたはおそらく、あなたは(そのようRmagick/wの画像を操作など)は、より複雑なことをやろうとする前に、基本的なRubyの構文のいくつかのドキュメントを読んでくださいBillede.foobar

を経由して、それを呼び出すことができます。

+1

+1の正解;ただし、そのようなメソッドを定義する方法を示す必要があります。焦点を当てたタスクでちょうどダイビングすることは、ドキュメントやチュートリアルを通して言語を "学習"しようとするよりも、言語を学ぶ上ではるかに効果的な方法であるとみなされています。いくつかの基本は良いですが、実験や助けを求めることもあります。 – Phrogz

1
# in /lib/billede.rb 
class Billede 

    def self.do_something(arg) 
    # ... 
    end 

    def do_anotherthing(arg) 
    # ... 
    end 

end 

# inside a model or controller 
require 'billede' 

Billede::do_something("arg") 
# or 
billede_instance = Billede.new 
billede_instance.do_anotherthing("arg") 
関連する問題