2014-12-31 25 views
9

Rails uygulamasının kök dizinine cd yapmaksızın, bu uygulama için bir Rails veya Rake komutunu nasıl çalıştırabilirim. Rails/Rake'i başka bir dizinden nasıl çalıştırırım?

Denedim:

bundle exec rake my_tasks:do_stuff BUNDLE_GEMFILE=/PATH/TO/RAILS_APP/Gemfile 

diğer kombinasyonların yanı sıra boşuna.

[Güncelleme]

konu gemfile ve tırmık çalıştırmak için bilmiyor nereye aslında iki kat, paket bilmiyor.

Bundler kullanmak için: BUNDLE_GEMFILE 'paket exec' önce gitmek zorunda

BUNDLE_GEMFILE=/PATH/TO/RAILS_APP/Gemfile bundle exec ... 

Not. Başka bir dizinden Raylar konsolu girmek için anlamaya

???? 

henüz var:

rake -f /PATH/TO/RAILS_APP/Rakefile my_task:do_stuff 

Raylar konsolunu kullanmak için:

Rake kullanın. source'a baktığımda, bunun mümkün olmayabileceğini düşünüyorum çünkü sonuçta File.join ('script', 'raylar') raylar sürecini başlatıyor.

+0

Burada [birkaç iyi cevap var] (http://stackoverflow.com/questions/1206545/run-rake-task-from-outside-rails-root) ama bence en iyi cevap, ' Bunu :-) yap. Mümkün olsa da, aramada rake için başvurulan her bir yolun, daha sonra aranan rake görevleri içinde bile, işin yürütüldüğü dizine bağlanmayı bekledikleri için karıştırıldığını görürsünüz. –

+0

İyi nokta Tom. Bill'in dediği gibi, görevlerin CWD agnostik olması gerekiyor. Küçük görevler için bu bir sorun olmamalı. Teşekkürler! – Nejuf

cevap

10

Aldığınız hata mesajını göstermeden, Bundler ile Rake'den daha az şey olduğunu varsayıyorum. Komisyon komutu çalıştırıldığında, geçerli dizinden başlayıp bir tane buluncaya kadar ağacı çaprazlayan bir Rakefile arar. Bu davranışı, komisyon komutuna yönelik seçeneklerde bir Rakefile açıkça belirterek geçersiz kılabilirsiniz. Bu -f <RAKEFILE> seçeneği kullanılarak yapılır. Örn.,

örn.

bundle exec rake -f /PATH/TO/RAILS_APP/Rakefile -T 

Rake görevlerinizin "CWD agnostik" olması gerektiğini unutmayın. Çoğu görev ve betik, proje dizinini dizin ağacındaki bilinen bir dosyaya göre bir yola göre alma eğilimindedir. Muhtemelen bunu zaten biliyorsunuzdur, ancak görevlerin mevcut çalışma dizinini aslında raylar kökü olmasını beklediğinden bahsetmeye değer. Bu, projenin dışından çalıştırmanın potansiyel olarak tehlikeli olabileceği bir durum olabilir.

+0

Sorun aslında benim için iki kat oldu: bundle gemfile bulamadık ve tırmık doğru bağlamı yoktu. Cevabınız rake parçasını sabitledi, teşekkürler! Cevabımı, sonuçları yansıtacak şekilde düzenleyeceğim. – Nejuf