我寫了一個發電機,創建以下紅寶石文件和文件夾:在test.rb
文件本地寶石類沒有Rails中找到應用
app/tests/test.rb
我有一個Test
類,看起來像這樣:
class Test < MyCustomModule::MyCustomClass::Base
...
end
現在,我想在show.html.erb
文件之一,以使用其功能創造這樣的新實例:
Test.new(...).render(...).html_safe
,但我收到以下錯誤:
uninitialized constant MyCustomModule::MyCustomClass::Base
我有使用以下answer鏈接我的寶石和我的Rails應用程序。它似乎工作,因爲我能夠使用發生器,但在rails應用程序中看不到gem模塊和類。
任何人都可以告訴如何解決這個問題?
我已經嘗試按照發布here,但仍然沒有改變提示:
- 添加
config.autoload_paths += Dir["#{config.root}/lib/**/"]
在application.rb
文件 - 我創建了我的寶石結構看
CarrierWave
寶石,所以命名應該是正確的 我嘗試禁用
config.threadsafe!
但它已被禁用,因爲config.cache_classes
和config.eager_load
被設置爲false發展DEPRECATION WARNING: config.threadsafe! is deprecated. Rails applications behave by default as thread safe in production as long as config.cache_classes and config.eager_load are set to true.
而且,看着adding-asset-to-your-gems軌文件,據說:
A good example of this is the jquery-rails gem which comes with Rails as the standard JavaScript library gem. This gem contains an engine class which inherits from Rails::Engine. By doing this, Rails is informed that the directory for this gem may contain assets and the app/assets, lib/assets and vendor/assets directories of this engine are added to the search path of Sprockets.
所以,我已經做到了這一點,並把我的模型類文件在assets
文件夾中,但結果是一樣的。
下面的截圖展示我真實的案例:
下面的屏幕截圖顯示我的寶石文件結構
在這裏你可以看到我是如何加載寶石在我的Rails應用程序中
Gemfile
:gem 'thumbnail_hover_effect', '0.0.3', github: 'thumbnail_hover_effec/thumbnail_hover_effec', branch: 'master'
然後我使用寶石發生器用cutstom名紅寶石文件
app/thumbnails/test.rb
文件夾下面的代碼:class Test < ThumbnailHoverEffect::Image::Base ... end
,並試圖使用
Test
類給我uninitialized constant ThumbnailHoverEffect::Image::Base
錯誤。早在創業板上市的文件,這些都是
thumbnail_hover_effect
文件看起來像require 'thumbnail_hover_effect/version' require 'thumbnail_hover_effect/engine' require 'thumbnail_hover_effect/image' module ThumbnailHoverEffect # Your code goes here... end
和鋤
image
文件看起來像:module ThumbnailHoverEffect # class Image ... end end
請問您能提供真實世界的代碼嗎?什麼是確切的類名,什麼是文件名?你確定所有東西都得到了正確的加載(我懷疑它)。 – phoet
@phoet對不起,爲了重播。我添加了一些真實的代碼,如果您需要了解其他內容,請告訴我。 – gotqn
和'ThumbnailHoverEffect :: Image :: Base'應該來自哪裏? – phoet