Voglio eseguire un file Ruby nel contesto di un ambiente Rails. runner fa quasi quello che voglio fare, ma mi piacerebbe solo dargli il nome del file e gli argomenti. Sono abbastanza sicuro che questo è possibile da quando l'ho fatto prima. Qualcuno può ricordarmi come farlo?Come si esegue un file Ruby in un ambiente Rails?
risposta
Basta richiedere environment.rb
nel tuo script. Se lo script si trova nella directory script
dei tuoi Rails fare
require File.expand_path('../../config/environment', __FILE__)
È possibile controllare l'ambiente utilizzato (sviluppo/test/produzione) impostando la variabile di ambiente RAILS_ENV
durante l'esecuzione dello script.
RAILS_ENV=production ruby script/test.rb
Il modo più semplice è con rails runner
perché non è necessario modificare lo script.
http://guides.rubyonrails.org/command_line.html#rails-runner
In Rails 2, è lo script/runner.
Basta dire rails runner script.rb
Runner corre codice Ruby nel contesto di Rails non interattiva.
Da 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.
È anche possibile utilizzare corridore come una linea di shebang per gli script come questo:
-------------------------------------------------------------
#!/usr/bin/env /Users/me/rails_project/script/rails runner
Product.all.each { |p| p.price *= 2 ; p.save! }
-------------------------------------------------------------
Questa è una vecchia questione, ma a mio parere spesso trovo è utile creare un compito di rake ... ed è in realtà molto semplice.
In 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 poi nel periodo terminale:
rake example:create_user
Localmente questo verrà eseguito nel contesto del database di sviluppo, e se eseguito su Heroku esso verrà eseguito mentre è connesso al tuo database di produzione. Trovo questo particolarmente utile per aiutare con le migrazioni, o tabelle modificate.
- 1. Console Rails: esegue più volte un file Ruby
- 2. Ambiente Ruby on Rails portatile
- 3. Come funziona Ruby Gem in un ambiente di rotaie
- 4. Come si eseguono ricerche con caratteri jolly con Mongoid in un ambiente Ruby on Rails?
- 5. Come si esegue un ordinamento personalizzato complesso in Ruby?
- 6. Python - Come si esegue un file .py?
- 7. Come si esegue un file utilizzando Java?
- 8. creare un nuovo ambiente in Rails
- 9. Come decomprimere un file in Ruby on Rails?
- 10. Come si esegue lo stub di un metodo per generare un errore utilizzando Ruby MiniTest?
- 11. Come si esegue un checksum file SHA1 in C#?
- 12. Come si esegue il debug di un'applicazione Rails?
- 13. Come si esegue l'aritmetica in un makefile?
- 14. Come si trova l'utente corrente in un ambiente Windows?
- 15. Ruby on Rails: come controllate se un file è un'immagine?
- 16. Come si esegue iterazione su oggetti record attivi in Ruby On Rails?
- 17. Ruby/Rails hanno un equivalente ++?
- 18. Come si esegue un file bat in background da un altro file bat?
- 19. Come si esegue un programma Python?
- 20. Come si esegue un file .bat da PHP?
- 21. Come si esegue uno script utilizzando un file BAT?
- 22. Come si esegue un file js usando gli script npm?
- 23. come si esegue un file php da ssh?
- 24. Come si esegue l'aggiunta del vettore in Ruby?
- 25. console rails - esegue un blocco di codice
- 26. Creazione di un ambiente Ruby on Rails su Windows, in una VM Vagrant Box
- 27. mi aspettavo tASSOC in un file Rails
- 28. Come si copia un hash in Ruby?
- 29. Che cos'è un lavoratore in ruby / rails?
- 30. Come si esegue un barattolo all'interno di un barattolo?
Se corro sopra il codice, fornirà "home/apps/config/environment". Cosa succede se ho 2 app di rotaie in esecuzione nella stessa directory. Quale ambiente ci vorrà? sto affrontando questo problema nella mia casella locale. suggerire gentilmente –
@VijaySali presumo che tu stia eseguendo il tuo script dalla directory 'app/script'. Il file dell'ambiente verrà preso dalla singola app. – iltempo
sì, ha funzionato per me, ho aggiunto ENV ['RAILS_ENV'] pure –