J'ai écrit un générateur qui crée le fichier ruby suivant et le dossier:classe joyau local ne se trouve pas dans l'application Rails
app/tests/test.rb
dans le fichier test.rb
J'ai une classe Test
qui ressemble à ceci:
class Test < MyCustomModule::MyCustomClass::Base
...
end
maintenant, je veux utiliser sa fonctionnalité dans l'un des fichiers show.html.erb
création nouvelle instance comme ceci:
Test.new(...).render(...).html_safe
mais je reçois l'erreur suivante:
uninitialized constant MyCustomModule::MyCustomClass::Base
j'utiliser ce qui suit answer pour lier mon petit bijou et mon application rails. Il semble fonctionner comme je suis capable d'utiliser le générateur, mais le module et la classe de gemme ne sont pas vus dans l'application de rails.
Quelqu'un peut-il dire comment résoudre ce problème?
j'essayer de suivre les conseils postés here mais toujours rien changé:
- Ajout
config.autoload_paths += Dir["#{config.root}/lib/**/"]
dansapplication.rb
fichier - J'ai créé ma structure de bijou regardant
CarrierWave
bijou, de sorte que le nommage des être correct J'essaie de désactiver
config.threadsafe!
mais il est déjà désactivé depuisconfig.cache_classes
etconfig.eager_load
sont mis à faux dans le développementDEPRECATION 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.
Aussi, regardant adding-asset-to-your-gems documentation rails, il est dit que:
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.
Alors, je l'ai fait cela, et mettre mon fichier de classe modèle dans le dossier assets
, mais le résultat est le même.
Les captures d'écran ci-dessous démontrent mon cas réel:
La capture d'écran ci-dessous affiche ma structure de fichier gemme
Ici vous pouvez voir comment je suis le chargement de la pierre précieuse dans mon application Rails
Gemfile
:gem 'thumbnail_hover_effect', '0.0.3', github: 'thumbnail_hover_effec/thumbnail_hover_effec', branch: 'master'
Je me sers du générateur de bijou un fichier rubis avec un nom de cutstom dans
app/thumbnails/test.rb
dossier avec le code suivant:class Test < ThumbnailHoverEffect::Image::Base ... end
et d'essayer d'utiliser la classe
Test
me donne l'erreuruninitialized constant ThumbnailHoverEffect::Image::Base
.Retour dans les fichiers de pierres précieuses, ce sont la façon dont le fichier
thumbnail_hover_effect
ressemblerequire 'thumbnail_hover_effect/version' require 'thumbnail_hover_effect/engine' require 'thumbnail_hover_effect/image' module ThumbnailHoverEffect # Your code goes here... end
et houe le fichier
image
ressemble:module ThumbnailHoverEffect # class Image ... end end
pouvez-vous fournir du code réel s'il vous plaît? quel est le nom de classe exact, quels sont les noms de fichiers? êtes-vous sûr que tout est chargé correctement (j'en doute). – phoet
@phoet Désolé, pour la relecture tardive. J'ai ajouté du vrai code, laissez-moi savoir si vous avez besoin de savoir quelque chose d'autre. – gotqn
et où 'ThumbnailHoverEffect :: Image :: Base' est censé provenir? – phoet