Ответы:
Самый простой способ - использовать, 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 запускает код Ruby в контексте Rails в неинтерактивном режиме.
Из 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! }
-------------------------------------------------------------
Это старый вопрос, но, на мой взгляд, я часто нахожу полезным создать задачу по рейку ... и на самом деле это очень просто.
В 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, оно будет запущено при подключении к вашей производственной базе данных. Я считаю это особенно полезным при переносе или изменении таблиц.