私はbillede.rbを持っている:クラスを呼び出す、またはクラスをアクティブにする方法は?私のlibフォルダに
class Billede
require 'RMagick'
#some code that creates a watermark for a image
image.write(out)
end
は、どのように私はクラスをアクティブ/呼ぶのですか?それをRakeタスクに変更する唯一の方法はありますか?
私はbillede.rbを持っている:クラスを呼び出す、またはクラスをアクティブにする方法は?私のlibフォルダに
class Billede
require 'RMagick'
#some code that creates a watermark for a image
image.write(out)
end
は、どのように私はクラスをアクティブ/呼ぶのですか?それをRakeタスクに変更する唯一の方法はありますか?
コード '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
と入力すると、このファイルが表示されます。
ありがとう、ちょうど私が探していた答え。レーキタスクを作成するよりも優れた解決策であると考えてください。もしあなたがちょうどいくつかのコードをテストするつもりです。 –
クラスを直接呼び出すことはできません。そのクラスのメソッドを呼び出す必要があります。たとえば:
class Billede
def self.foobar
# some kind of code here...
end
end
次に、あなたはおそらく、あなたは(そのようRmagick/wの画像を操作など)は、より複雑なことをやろうとする前に、基本的なRubyの構文のいくつかのドキュメントを読んでくださいBillede.foobar
を経由して、それを呼び出すことができます。
+1の正解;ただし、そのようなメソッドを定義する方法を示す必要があります。焦点を当てたタスクでちょうどダイビングすることは、ドキュメントやチュートリアルを通して言語を "学習"しようとするよりも、言語を学ぶ上ではるかに効果的な方法であるとみなされています。いくつかの基本は良いですが、実験や助けを求めることもあります。 – Phrogz
# 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")
私の質問は何か疑問がありますか? –
はい、疑問があります。私は個人的にあなたが意味することを知らない。あなたは何をしたいのですか?なぜそのクラスのすべてが 'クラス 'の中にあるのですか? – Phrogz
seconded @Phrogz – Josh