私の lib フォルダーには、billede.rb があります。
class Billede
require 'RMagick'
#some code that creates a watermark for a image
image.write(out)
end
クラスを呼び出す/アクティブ化するにはどうすればよいですか? Rake タスクに変更する唯一の方法はありますか?
私の lib フォルダーには、billede.rb があります。
class Billede
require 'RMagick'
#some code that creates a watermark for a image
image.write(out)
end
クラスを呼び出す/アクティブ化するにはどうすればよいですか? Rake タスクに変更する唯一の方法はありますか?
クラスを直接呼び出すことはできません。そのクラスのメソッドを呼び出す必要があります。例えば:
class Billede
def self.foobar
# some kind of code here...
end
end
次に、経由で呼び出すことができますBillede.foobar
おそらく、より複雑なこと (Rmagick を使用した画像の操作など) を試みる前に、基本的な ruby 構文に関するドキュメントを読む必要があります。
「クラス内の」コードは、他のコードと同じように実行されます。このようなRubyファイルがある場合:
puts "Hello from #{self}"
class Foo
puts "Hello from #{self}"
end
ファイルを(ruby foo.rb
コマンドラインまたはrequire "./foo"
スクリプトload "foo.rb"
で)実行すると、次の出力が表示されます。
メインから
こんにちはFooからこんにちは
IRBやRailsコンソールなどの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
、コマンドラインから入力すると呼び出されます。
# 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")