Raylar yalnızca paket yükleme üretimi


87

Rails / Ruby / Bundler konusunda hala yeniyim ve biraz kafam karıştı.

Bizim de config/application.rbdosyaya bu bundler segmenti var:

if defined?(Bundler)         
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

ve bizim Gemfileiçinde farklı gruplar kullanıyoruz, örneğin

group :development, :test do
  gem "rspec-rails", ">= 2.7.0", :group => [:development, :test]
  gem 'shoulda-matchers'
  gem 'watchr'
  gem 'spork', '~> 1.0rc'
  gem 'spectator'                          
  gem 'debugger'
  gem 'wirble'
end

Ama çalıştırdığımda RAILS_ENV=production bundle install(veya bundle install --deployment), hala geliştirme / test grubundan taşlar yüklüyor ...

Bu neden oluyor veya bunun düzgün çalışmasını nasıl sağlayabilirim?

Yanıtlar:


182

Seçeneğe bir göz atın --without:

bundle install --without development test

Varsayılan olarak Bundler tüm taşları yükler ve uygulamanız ihtiyaç duyduğu mücevherleri kullanır. Bundler'ın kendisi Rails ve mevcut ortam hakkında hiçbir şey bilmiyor.


3
Biliyorum --without, ama özellikle de config/application.rb(tam olarak bunu ele alması gereken) yapılandırma direktiflerini göz önünde bulundurarak ve ayrıca şu alıntıyı göz önünde bulundurarak: Rails 3, paketleyici ile birlikte fırınlanmış olarak geliyor.
gingerlime

2
Paket yükleme komutu, Rails'ten tamamen bağımsızdır. Sadece Gemfile'ınıza bakar, uygulamanızın belirtilen yapılandırmada gerçekte hangi kitaplıkları gerektirdiği umurunda değildir. Aslında, Bundler.require'ı atlayabilir ve herhangi bir gruptan manuel olarak kitaplık isteyebilirsiniz. Rails'in bu durumda Bundler ile daha iyi entegre olabileceğine katılıyorum, ancak öyle değil.
Simon Perepelitsa

2
Anlıyorum. Dolayısıyla, rayların paketleyici hakkında bilgi sahibi olduğunu (yani içinde config/application.rbve aynı zamanda config/boot.rb), ancak paketleyicinin raylar hakkında hiçbir şey bilmediğini söylemek doğru olur ... Yalnızca Gemfile'ı okur ve bu ray dosyalarının hiçbirini kullanmaz. Sanırım madeni para sonunda düştü. Yardımınız için teşekkürler!
gingerlime

aslında bu, Rails uygulamanızdaki ortamları değil, Gemfile'ınızdaki 'grupları' hariç tuttuğu için zarif görünüyor. Bunun söylendiğini biliyorum ama bu şekilde düşündüğümde bana daha anlamlı geldi.
jaydel

1
Bunun son dört yılda değişen bir şey olup olmadığından emin değilim, ancak argümanların boşluklarla değil s --withoutile ayrılması gerekiyordu :. Bu yüzden olması gerektiğine inanıyorum bundle install --without development:test.
Joe Freeman

2

Alternatif bir çözüm, bundle-onlyyakut mücevherini kullanmaktır . Aşağıdaki şekilde kullanılabilir:

> gem install bundle-only
> bundle-only production

Bu kitaplık, paketleyici yapılandırmalarınızı veya artırmanızı kirletmez Gemfile.lock; sağlayan yerleşik bundle --without every other groupseçeneğe basit bir alternatiftir bundler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.