回答:
最も簡単な方法は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.
次のように、ランナーをスクリプトのシバン行として使用することもできます。
-------------------------------------------------------------
#!/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で実行された場合、運用データベースに接続されている間に実行されます。これは、移行や変更されたテーブルの支援に特に役立ちます。