2009-04-17 19 views
11

Ruby on Rails uygulamasında bazı runner komut dosyalarını çalıştırmak için kabuk komut dosyası kullanıyorum. Ben üretim veritabanı üzerinde çalıştırmak için gereken, ancak aşağıdaki: Ne zaman config/environment.rbRuby On Rails: Runner komut dosyası ortamını nasıl belirleyebilirim

ENV['RAILS_ENV'] ||= 'production' 
bunu zorlamak için çalıştılar

/usr/bin/ruby: No such file or directory -- RAILS_ENV=production (LoadError) 

:

#!/bin/bash 
/usr/bin/ruby RAILS_ENV=production ../script/runner ../lib/tasks.rb 

hata veriyor

veya hatta

ENV['RAILS_ENV'] = 'production' 

Ancak bununla birlikte hala geliştirme ortamında çalışır.

Güncelleştirme: Ben betikleri config/database.yml dosyasını düzenleyerek doğru veritabanına bağlanmak için zorlayabilirim, ancak bunu yapmanın doğru yolu nedir merak ediyorum.

+0

Benim tepkisini okudunuz benim için çalıştı? Parametrelerinizi farklı şekilde iletirseniz, ortamınızı doğru seçecektir. – Garrett

+0

Çalışacak, ancak ortamı doğru şekilde ayarlamayacak. – Goro

+0

Sonra komut dosyanızla ilgili bir şey yanlış, komut değil. – Garrett

cevap

25

komut dosyası için komut satırında yardım/koşucu verir: Bunu böyle ortam değişkeni ayarlayabilirsiniz, kabuğun oturumu ömrü boyunca sopa

#!/bin/bash 
export RAILS_ENV=production 
/usr/bin/ruby ../script/runner ../lib/tasks.rb 
+0

Aynı sorunla karşı karşıya. Bu çözüm benim için çalıştı. Teşekkürler. +1 – Chirantan

+1

Bir senaryo/koşucu yok, ama senaryo/raylar koşucu -e üretim Model.method benim için çalışıyor. –

+0

ne '' script/runner -e üretim Model.method'' ne de '' script/raylar runner -e üretim Model.method'' benim için çalıştı ... aşağıdaki gibi çalıştı: '' RAILS_ENV = üretim rayları koşucu - e üretim Model.method' – s2t2

5

Bu sizin emriniz buysa, argümanlarınızın sırası sizin en büyük probleminizdir. ( ) İkinci örnek dosya arıyor

/usr/bin/ruby ../script/runner ../lib/tasks.rb RAILS_ENV=production 

yakut çalıştırmak istediğiniz dosya olarak yorumlanırken, ilki bir çalışma zamanı değişken ayarlıyor.

5

Eğer yinelemek Eğer bu gibi komut dosyası:

#!/bin/bash 
RAILS_ENV=production 
/usr/bin/ruby ../script/runner ../lib/tasks.rb 

... işte bu senaryo ömrü boyunca sopa yapacaktır.

RAILS_ENV=production /usr/bin/ruby ../script/runner ../lib/tasks.rb 
1

olarak değiştirin yapmak senin cevabın.

script/runner -e production Model.method 
0
RAILS_ENV=production script/rails runner 'user = User.find(:first, :conditions => {:admin => true}) ; user.password, user.password_confirmation = "mypasswd"; user.save!' 

o