Respostas:
A maneira mais simples é com, rails runnerporque você não precisa modificar seu script.
http://guides.rubyonrails.org/command_line.html#rails-runner
Apenas diga rails runner script.rb
Simplesmente exija environment.rbem seu script. Se o seu script está localizado no scriptdiretório do seu aplicativo Rails, faça
require File.expand_path('../../config/environment', __FILE__)
Você pode controlar o ambiente usado (desenvolvimento / teste / produção), definindo a RAILS_ENVvariável de ambiente ao executar o script.
RAILS_ENV=production ruby script/test.rb
app/scriptdiretório. O arquivo de ambiente será obtido do aplicativo individual.
Runner executa código Ruby no contexto do Rails de forma não interativa.
Do rails runnercomando:
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.
Você também pode usar runner como uma linha shebang para seus scripts como este:
-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner
Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------
Esta é uma pergunta antiga, mas na minha opinião eu sempre acho útil criar uma tarefa de rake ... e na verdade é muito fácil.
Em 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
E então, no terminal, execute:
rake example:create_user
Localmente, isso será executado no contexto do seu banco de dados de desenvolvimento e, se executado no Heroku, será executado enquanto estiver conectado ao seu banco de dados de produção. Acho isso especialmente útil para ajudar com migrações ou tabelas modificadas.