Как запустить файл Ruby в среде Rails? - PullRequest
90 голосов
/ 18 марта 2012

Я хочу запустить файл Ruby в контексте среды Rails. rails runner почти делает то, что я хочу, но я хотел бы просто дать ему имя файла и аргументы. Я уверен, что это возможно, так как я сделал это раньше. Может кто-нибудь напомнить мне, как это сделать?

Ответы [ 4 ]

110 голосов
/ 18 марта 2012

Самый простой способ - с rails runner, потому что вам не нужно изменять скрипт.

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

Просто скажи rails runner script.rb

32 голосов
/ 18 марта 2012

Просто потребуйте environment.rb в вашем скрипте.Если ваш сценарий находится в каталоге script вашего приложения Rails, выполните

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

. Вы можете управлять используемой средой (разработка / тестирование / производство), задав переменную среды RAILS_ENV при запуске сценария..

RAILS_ENV=production ruby script/test.rb
22 голосов
/ 07 октября 2013

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 какстрока Шебанга для ваших сценариев, как это:

-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner

Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------
5 голосов
/ 28 февраля 2017

Это старый вопрос, но, на мой взгляд, я часто нахожу полезным создать грабли ... и на самом деле это очень просто.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...