2011-04-12 15 views
7

ancak Ototest ile testler için bu Gemfile (kısmi) ile RSpec, salatalık ve OtotestPlatformu özgü taşlar ı I üzerinde çalışıyorum raylar projede

gem 'rspec-rails' 
gem 'cucumber-rails' 
gem 'autotest-standalone' 
gem 'autotest-rails-pure' 
gem 'zentest-without-autotest' 

desteği takılı i aksi takdirde bu mesajın Şimdi

$ autotest 
loading autotest/cucumber_rails_rspec_rspec2 
Error loading Autotest style autotest/cucumber_rails_rspec_rspec2 (no such file to load -- autotest/cucumber_rails_rspec_rspec2). Aborting. 

bir Mac üzerinde geliştiriyorum ve kendinden test-homurtu ve kendinden test-fsevents mücevher etkinleştirmek istiyorum başarısız olur, ancak bundle exec autotest yürütmek için ihtiyaç benim ~/.autotest yılında bu satırları eklerseniz

require 'autotest/growl' 
require 'autotest/fsevent' 

sonra Gemfile karşılık gelen mücevher takmak gerekiyor ve her şey çalışıyor, ancak (Linux) benim CI sunucuda kurar kırar yerel için farklı Gemfile sürdürmek olmadan bu çözmek için nasıl

ve CI ortamları?

DÜZENLEME

: Ben Gemfile

Hem yerel hem CI sunucuda çalışan
if RUBY_PLATFORM.downcase.include?("darwin") # I'm on Mac 
    gem 'autotest-fsevent' 
    gem 'autotest-growl' 
end 

bu hatları ile çözüldü an için

, ben şu an için bunun olmadığını karışıklık şey bilmiyorum kusursuz çalışıyor gibi görünüyor.

Bunu yapmanın daha temiz bir yolu hala açıktır.

EDIT2:

I gruplar çözeltiler geçti. Önceki monkeypatch geliştirme ve sürekli entegrasyon için oldukça iyi çalışıyor olsa da, dağıtımlar için capistrano bundler görevlerini kullanırsanız veya bundle install --deployment seçeneğini kullanırsanız (üretimde önerilmektedir)

if RUBY_PLATFORM.downcase.include?("darwin") satırında bu hatayı dağıtmak için alırsınız.

# bundle install --deployment --without development test 
You are trying to install in deployment mode after changing 
your Gemfile. Run `bundle install` elsewhere and add the 
updated Gemfile.lock to version control. 

You have deleted from the Gemfile: 
* autotest-fsevent 
* autotest-growl 

Yani bu sorunun benim son çözüm, belirli bir gruptaki platforma özel taşlar dahil etmektir, bu paket kullanılarak hariç osx ve sonra üretimde ve CI sunucuda söylüyorlar.

Eğer farklı Gemfile ortamlarda (test, geliştirme, üretim) yararlanarak bu işleyebilir senin config.rb

set :bundle_without, [:development, :test, :osx] 
# capistrano bundler task 
require "bundler/capistrano" 

cevap

0

Sen gemfile grupları kullanmak isteyebilirsiniz , gibi bir şey:

group :development do 
    gem "autotest-growl" 
    gem "autotest-fsevents" 
end

ve sunucuda kullandığınız: $ bundle install --without development

+0

Ben bu konfigürasyonu kullanıyorum (https://github.com/fabn/rails-jenkins-template) ve bunu basit tutmak isterim, bu yüzden adım adımı ci gibi tutmak istiyorum. paket kurulumu gibi basit; komisyon spesifikasyonu; rake hıyarı. – Fabio

+0

Bu konuda birçok arama yapıyorum ve şu anda bir çözüm yok. Bu yüzden cevabınızı doğru olarak kabul edeceğim. – Fabio

0

bu koymak dağıtan için Capistrano kullanın.

CI sunucusu "üretim" ortamınızdayken yerel kutunuz geliştirilebilir.

Bu düşünceyle, Gemfile'ınızı, ortamınıza bağlı olarak uygun taşları kullanmak üzere düzenleyebilirsiniz.

Düzeltme: Maalesef, postanızı çok hızlı bir şekilde taradım. Ancak, ~/.autotest numaranızı .gitignore'a ekleyebilirsiniz, böylece CI sunucunuza dahil edilmeyecektir.

+0

'~/.autotest' dosya, çünkü bir sorun değildir Proje dizininde değil, ev dizinimde. Sorun, Gemfile'da listelenmeyen iki mücevher gerektirdiğinden, bu taşlar gerektiren demet bağlamında bir yükleme hatası ortaya çıkar. Yapılandırma çoğaltmasını önlemek için diğer yaklaşımı (Gemfile'da farklı ortamları yönetmekten) kaçınmak isterim. – Fabio

+0

Tamam, sorununuzu daha iyi anlıyorum. Ancak, Gemfile'ınızda farklı "test, geliştirme, üretim" gruplarına sahip olmayı sevmediğinizi mi söylüyorsunuz? Çünkü bu tam olarak bu grupların ne için var olduğu; diff farklı ortamlar için yapılandırır. Ayrıca, CI ve geliştirme sunucunuzun oldukça farklı olması (linux vs osx). Bunun için endişelenmekten ziyade, CI'nizi doğru şekilde kurmak için tekrarlanabilir bir yol yaratmaya odaklanmanız gerektiğini düşünüyorum. Ve bunu sadece kendi komisyon görevinizi yazarak yapabilirsiniz. – Dty

+0

Söylediklerinize katılıyorum, kaçınmak istediğim tek şey, uygulamayı bir aşamada çalıştırmam gerekirse, ortak bir ortamda (örneğin geliştirme) platform bağımlı mücevherleri (autotest-growl) koymaktır. geliştirme ortamına sahip sunucu (bir demo veya bir kavram kanıtı göstermek için) Linux üzerinde çalışmaz. – Fabio

İlgili konular