2016-04-05 17 views
10

Raylardaki modeller için this method kullanıyorum. Gerçekten iyi çalışıyor, ancak Rails 5 beta3'e yeni yükselttim ve şimdi üretimde çalışmıyor.Raylar 5 gözardı/lib sınıfı?

bu hatayı alıyorum:

Completed 500 Internal Server Error in 22ms (ActiveRecord: 0.9ms) 

NameError (uninitialized constant ApplicationController::ModalResponder): 

app/controllers/application_controller.rb:26:in `respond_modal_with' 
app/controllers/tools_controller.rb:28:in `new' 

benim miras Raylar 5 ile atılır mı?

Benim class ModalResponder < ActionController::Responder/lib olduğunu ve raylar 5 ile değişikliklerle ilgili bilgi mi arıyorsunuz

... gelişmesinde çalışır, ancak kaynaklar bildiğim kadarıyla sınırlıdır.

+2

Rails 5.0.0'da bir hata gibi görünüyor. Beta dışında da mevcut. Benim için, sadece üretimde değil, gelişimde gerçekleşir. –

cevap

6

gerektirecek zorunda 'gerektiren' lib içine sınıflarınızla (application.rb üzerine) Klasör.

gibi:

require './lib/someclass'

Sana bir Raylar eklenti içine koymak önerilir.

+0

bir eklenti yapmak için en iyi süreci açıklayabilir misiniz? Lib dosyasını benim/app dizinine taşıdım, bu yüzden dahil edilecek, ancak bu muhtemelen en iyisi değil mi? –

+1

Elbette! Raylar eklentileri hakkında daha fazla bilgiyi buradan edinebilirsiniz (http://guides.rubyonrails.org/plugins.html). Tümünü test etmek daha iyidir ve eklenti içine yükleme dosyası ayarları ekleyebilirsiniz. Sadece bir eklenti oluşturun ve lib klasörünü onların içinde hareket ettirin, ihtiyaçlarınızı eklemek için 'Foo' dosyası oluşturmanızı tavsiye ederim. Application.rb projenizde sadece 'foo' gerektirir. Üzgünüm benim ingilizce hahah. –

+0

Aşağıdakileri kullanarak lib klasörünü de kullanabilirsiniz: 'config.autoload_paths << Rails.root.join ('lib')' –

-1

Rails 4.2'den ayrı bir gemiye taşınan ApplicationController::Responder'u bulamadığını söylüyor.

lib yılında

Sınıflar otomatik yüklenmesi olmayan, ancak Gemfile için gem 'responders' eklersen ekleyebilir gerek onlara

+0

Uygulama dizinimdeki otomatik dizini otomatik olarak yükledim ... –

+1

Lib'in otomatik olarak yüklenmemesi için gerekçelendirme sağlayabiliyorsanız bunu bir yanıt olarak seçebilirim. Bu cevap bir çek hak etmek için yeterli değildir. –

15

Değişim bu: Buna

config.autoload_paths << Rails.root.join('lib') 

:

config.eager_load_paths << Rails.root.join('lib') 

eager_load_paths hevesle üretimde ve on-demand gelişiminde yüklenir alacak. Bu şekilde, her dosyaya açık bir şekilde gerek duymazsınız.

this answer hakkında daha fazla bilgi edinin.