如何在Rails环境中运行一个Ruby文件?

我想在Rails环境的上下文中运行一个Ruby文件。 rails runner几乎做我想做的,但我想只给它的文件名和参数。 我很确定这是可能的,因为我以前做过。 有人可以提醒我如何做到这一点?

最简单的方法是使用rails runner因为您不需要修改脚本。

http://guides.rubyonrails.org/command_line.html#rails-runner

在Rails 2中,它是脚本/跑步者。

只要说rails runner script.rb

只需要脚本中的environment.rb 。 如果你的脚本位于Rails应用程序的script目录中,

 require File.expand_path('../../config/environment', __FILE__) 

运行脚本时,可以通过设置RAILS_ENV环境variables来控制所使用的环境(开发/testing/生产)。

 RAILS_ENV=production ruby script/test.rb 

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作为脚本,如下所示:

 ------------------------------------------------------------- #!/usr/bin/env /Users/me/rails_project/script/rails runner Product.all.each { |p| p.price *= 2 ; p.save! } ------------------------------------------------------------- 

这是一个古老的问题,但在我看来,我经常发现创build一个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 

然后在terminal运行:

 rake example:create_user 

在本地,这将在开发数据库的上下文中运行,如果在Heroku上运行,它将在连接到生产数据库时运行。 我觉得这对帮助迁移或修改表格特别有用。