質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

692閲覧

外部モジュールをrequireする時にdevelopment環境だけコード編集した際にサーバー再起動しないで画面再読み込みだけだとuninitialized constant モデル名 でコケる。

cube_3110

総合スコア27

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/09/10 08:34

編集2020/09/13 11:58

実現したいこと

外部モジュールを参照でき、かつローカル環境(development環境)でコード編集時、サーバー再起動しないで画面再読み込みだけでも問題なく開けること。

背景

外部モジュールと連携して開発をする際、外部モジュールを設置してそのモジュールのパスを繋ぐためにrequireで参照。
問題なく機能はするが、タイトルにある事象が発生してしまう。
今まさに詰まってる部分なので知見がある方やアドバイスいただける方ご協力よろしくお願いします。

発生している問題・エラーメッセージ

ruby

1uninitialized constant モデル名 2``` のエラーメッセージが出る。 3 4### 試したこと 5①外部モジュールのモジュール名と同様のクラス名を使っていたので、クラス名を外部モジュールのモジュール名とは異なるものに変えたが、同じエラーが発生してしまう。(ファイル名も同様に変えたが、変わらず・・・) 6 7以下、2020/09/13 追記 8**config/application.rb**に以下を追加したが、変わらず・・・ 9```Ruby 10config.eager=load_paths += %W(#{config.root}/lib)

config/environments/development.rbconfig.cache_classes = falseconfig.cache_classes = trueに変えたらエラーは出なくなった。(そもそもこれだとコード修正が反映されないから意味がないけど、一応やってみた)

補足情報(言語/FW/ツール等のバージョンなど)

Mac OS Catalina v10.15.4
Ruby on Rails v4.2.6
Ruby v2.3.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

(lib以下などに設置した)外部モジュールをapp/model以下と同様に自動再読み込みさせたい場合は
config.eager_load_pathsを使うとよいでしょう。

また、定数の自動読み込みと再読み込み (Classic)
について目を通しておくことも必要です。


解決しない場合、作業内容およびエラーの詳細が欲しいです。

・外部モジュールの設置場所
・"コード編集"の具体的な内容(外部モジュールを編集したのか、それともアプリ内のコード(例:コントローラ)を編集したのか)
・エラーが出るモデルのクラス名およびファイル名(マスクが必要な場合は大文字・小文字、記号そのままに)

投稿2020/09/10 23:14

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

すみません。
こちら解決しました。
原因は、外部モジュール側と同じクラス名(モジュール名)を使ってたことが原因でした。
なので、クラス名やファイル名をぶつからないように良い感じに変えて試してみたらコード編集してサーバー再起動しないで画面再読み込みしてもエラー出なくなりました。

投稿2020/09/13 12:00

cube_3110

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問