Я хочу запустить файл Ruby в контексте среды Rails. rails runner почти делает то, что я хочу сделать, но я бы просто дал ему имя файла и аргументы. Я уверен, что это возможно, так как я делал это раньше. Может кто-нибудь напомнить мне, как это сделать?
Как запустить файл Ruby в среде Rails?
Ответ 1
Самый простой способ - rails runner
, потому что вам не нужно изменять свой script.
http://guides.rubyonrails.org/command_line.html#rails-runner
В Rails 2 это script/runner.
Просто скажите rails runner script.rb
Ответ 2
Просто введите environment.rb
в свой script. Если ваш script находится в каталоге script
вашего приложения Rails, выполните
require File.expand_path('../../config/environment', __FILE__)
Вы можете управлять используемой средой (разработка/тестирование/производство), устанавливая переменную среды RAILS_ENV
при запуске script.
RAILS_ENV=production ruby script/test.rb
Ответ 3
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! }
-------------------------------------------------------------
Ответ 4
Это старый вопрос, но, на мой взгляд, мне часто бывает полезно создать задачу грабли... и это на самом деле очень просто.
В 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, он будет запущен при подключении к вашей производственной базе данных. Я нахожу это особенно полезным для помощи при миграции или измененных таблицах.