在我的 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
也许你应该在尝试做更复杂的事情之前阅读一些关于基本 ruby 语法的文档(例如使用 Rmagick 操作图像)。
“类内”的代码就像任何其他代码一样运行。如果你有这样的 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")