Odpowiedzi:
Najprostszym sposobem jest rails runner
to, że nie musisz modyfikować swojego skryptu.
http://guides.rubyonrails.org/command_line.html#rails-runner
Tylko powiedz rails runner script.rb
Po prostu wymagaj environment.rb
w swoim skrypcie. Jeśli twój skrypt znajduje się w script
katalogu aplikacji Railsów, zrób to
require File.expand_path('../../config/environment', __FILE__)
Możesz kontrolować używane środowisko (programowanie / testowanie / produkcja), ustawiając RAILS_ENV
zmienną środowiskową podczas uruchamiania skryptu.
RAILS_ENV=production ruby script/test.rb
app/script
katalogu. Plik środowiska zostanie pobrany z indywidualnej aplikacji.
Runner uruchamia kod Ruby w kontekście Railsów w sposób nieinteraktywny.
Z rails runner
polecenia:
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.
Możesz również użyć runnera jako linii shebang dla swoich skryptów, w następujący sposób:
-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner
Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------
To stare pytanie, ale moim zdaniem często pomocne jest utworzenie zadania prowizji ... i jest to w rzeczywistości bardzo łatwe.
W 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
A potem w terminalu uruchom:
rake example:create_user
Lokalnie będzie to uruchamiane w kontekście Twojej deweloperskiej bazy danych, a jeśli zostanie uruchomione w Heroku, zostanie uruchomione podczas połączenia z produkcyjną bazą danych. Uważam, że jest to szczególnie przydatne przy migracji lub modyfikowaniu tabel.