我的服务器索引目录中有一个rails 3控制器和一个非常简单的ruby(.rb)文件。我想从我的控制器中运行该文件 - 最好的方法是什么?
答案 0 :(得分:2)
您可以尝试load
:http://www.ruby-doc.org/core/classes/Kernel.html#M001417
这是一个例子
# in your controller
def create
load('/path/to/your/file.rb')
end
但是,我会说通过运行外部脚本从Rails调用Ruby代码通常是不好的做法。我认为你最好将你的Ruby文件分成两部分:
然后,在你的Rails应用程序中,只需require
#1并使用类/模块。
例如,假设您的脚本当前名为simple.rb,如下所示:
# simple.rb
puts 'Hello, world!'
然后您将创建hello_world.rb
并执行此操作:
# hello_world.rb
class HelloWorld
def say_it
puts 'Hello, world!'
end
end
您可以使用以下内容替换simple.rb
的内容:
require 'hello_world.rb'
HelloWorld.new.say_it
然后,在您的控制器中,您可以绕过simple.rb
并直接使用HelloWorld
类:
答案 1 :(得分:0)
您希望脚本在其自己的进程中运行吗?如果是这样,请检查这些。
此外,您可以像这样使用脚本运行器:
系统“RAILS_ENV =#{RAILS_ENV} ruby#{RAILS_ROOT} / script / runner'MyModel.my_method(some_param)'&”
&最后将把任务放到另一个过程中。