Respostas:
A maneira mais simples é com, rails runner
porque 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.rb
em seu script. Se o seu script está localizado no script
diretó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_ENV
variável de ambiente ao executar o script.
RAILS_ENV=production ruby script/test.rb
app/script
diretó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 runner
comando:
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.