Answers:
最简单的方法是使用,rails runner
因为您不需要修改脚本。
http://guides.rubyonrails.org/command_line.html#rails-runner
说啊 rails runner script.rb
只需environment.rb
在脚本中要求即可。如果您的脚本位于script
Rails应用程序的目录中,请执行
require File.expand_path('../../config/environment', __FILE__)
您可以通过RAILS_ENV
在运行脚本时设置环境变量来控制使用的环境(开发/测试/生产)。
RAILS_ENV=production ruby script/test.rb
app/script
目录运行脚本。环境文件将从单个应用程序中获取。
Runner在Rails上下文中非交互地运行Ruby代码。
从rails runner
命令:
Usage: runner [options] ('Some.ruby(code)' or a filename)
-e, --environment=name Specifies the environment for the runner to operate under (test/development/production).
Default: development
-h, --help Show this help message.
您还可以将runner用作脚本的shebang行,如下所示:
-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner
Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------
这是一个古老的问题,但我认为创建一个rake任务通常会很有帮助...而且实际上非常简单。
在lib/tasks/example.rake
:
namespace :example do
desc "Sample description you'd see if you ran: 'rake --tasks' in the terminal"
task create_user: :environment do
User.create! first_name: "Foo", last_name: "Bar"
end
然后在终端运行:
rake example:create_user
在本地,这将在开发数据库的上下文中运行,并且如果在Heroku上运行,它将在连接到生产数据库时运行。我发现这对于协助迁移或修改表特别有用。