我在服务器索引目录中有一个rails 3控制器和一个非常简单的ruby (.rb)文件。我想在我的控制器内运行这个文件--什么是最好的方法?
发布于 2011-01-11 00:04:03
你可以试试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类:
发布于 2011-01-11 00:24:17
您想让脚本在它自己的进程中运行吗?如果是的话,看看这些。
http://codeforpeople.rubyforge.org/svn/bj/trunk/README
系统“RAILS_ENV=#{RAILS_ENV} ruby #{RAILS_ROOT}/script/runner 'MyModel.my_method(some_param)‘& "
最后,&将把任务放到另一个过程中。
https://stackoverflow.com/questions/4652485
复制相似问题