こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。
このブログでは、
僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、
ノウハウなどを書いていきます。
今回は、
- Ruby on Jetsで、include ActiveModel::Validationsが、NameError: uninitialized constantエラーになる時の対処法
についてです。
【Ruby on Jets】include ActiveModel::ValidationsがNameError: uninitialized constantエラーになる時の対処法
- 【Ruby on Jets】include ActiveModel::ValidationsがNameError: uninitialized constantエラーになる時の対処法
- 起こったこと
- 原因
- 対処法
- 検証
- 初めての方はこちらのオススメ記事もどうぞ
- フリーランスエンジニアになりたい方はこちら
- Rubyを学習するならこちら
- フリーランスエンジニアのデメリットはこちら
起こったこと
Ruby on Jetsでバリデーションを機能させるため、
ActiveModel::Validations
をincludeし、
コンソールを起動。
すると、定数読み込みに失敗するエラーが発生。
NameError: uninitialized constant Article::ActiveModel
下記のようなモデルです。
# app/models/article.rb class Article < Dynomite::Item # dynomite docs # https://github.com/tongueroo/dynomite include ActiveModel::Validations column :id, :title, :published_at, :link validates_presence_of :title, :published_at, :link end
gemのドキュメント通りなんだけどなあ...
gem 'dynomite'
https://github.com/tongueroo/dynomite#validations
原因
調べていると、下記の記事がヒット。
https://github.com/tongueroo/dynomite#validations
You have to require the whole of active_model since it uses autoload to "lazily require" classes as needed.
auto_loadを使用して必要に応じてクラスを「遅延して要求する」ため、active_model全体を要求する必要があります。 次のコードは正常に動作します。
つまり、
ActiveModel
がまだ読みこまれていない段階で、
ActiveModel::Validations
を読み込もうとしていたということ。
なので、class定義の前に、
明示的に active_model
を読み込みさせれば良い、
ということと解釈。
対処法
モデルに下記の1行を追記すればOKです。
require 'active_model'
ファイルは下記のようになります。
# app/models/article.rb require 'active_model' <<<=== class XXX より前に、これを追記 class Article < Dynomite::Item # dynomite docs # https://github.com/tongueroo/dynomite include ActiveModel::Validations column :id, :title, :published_at, :link validates_presence_of :title, :published_at, :link end
検証
Jetsコンソールで確認します。
$ be jets c Jets booting up in development mode! irb(main):001:0> a = Article.new(id: '123') => #<Article:0x00007f7fbe47bb30 @attrs={:id=>"123"}> irb(main):002:0> a.valid? => true
コンソールが起動し、
valid? も呼び出せたので、
ActiveModel::Validations
が正常に読み込み出来たことが確認出来ました★
以上、
- Ruby on Jetで、include ActiveModel::Validationsが、NameError: uninitialized constantエラーになる時の対処法
でした。
初めての方はこちらのオススメ記事もどうぞ
フリーランスエンジニアになりたい方はこちら
フォスターフリーランスという、
フリーランス専門エージェントを使うのがおすすめです。
自分もフォスターフリーランスを使って、
フリーランスエンジニアとしてのキャリアをスタートさせました。
フォスターフリーランスを使うと、
自分の代わりに、
プロの営業さんが案件を探してくれます。
最初の内は、
自分で営業なんてとても出来ないので、
非常にありがたかったです。
しかも無料で利用できる。
参考までに、
自分がお世話になっているエージェントを2つご紹介しておきます。
話を聞くだけでもOKなので、
ぜひ利用してみてください。
✅フォスターフリーランス【案件保有数5000件以上。業界25年の超老舗】
下記の記事で、
フォスターフリーランスの特徴について解説しています。
Rubyを学習するならこちら
Udemy
という動画教材です。
なんとUdemy
は、
60%OFFのセールをやっている時もあります。
こまめにチェックして、
スキルアップを図りましょう★
また、
Ruby関連の過去記事は下記にありますので、
合わせてチェックしてみてください◎
技術関連-Ruby カテゴリーの記事一覧 - スリ飯屋MaLankaのフリーエンジニアな日々
フリーランスエンジニアのデメリットはこちら
今回のコロナで、
参画していたプロジェクトが終了し、被害を受けました。
そこで、
コロナ被害を受けて感じている、
フリーランスエンジニアのデメリット【6つ】について、
noteを書きました。
下記に当てはまる人に、参考になると思います。
✅現在、フリーランスエンジニアとして生きている人
✅今からフリーランスエンジニアになろうとしている人
✅フリーランスエンジニアだが、コロナの影響で仕事が途絶えた人
https://note.com/malanka666/n/n081d40a196bfnote.com
今回、コロナの被害が直撃したことを受け、
— mah@フリーランスエンジニア (@RailsRubyMah6h) May 1, 2020
✅フリーランスエンジニアのデメリットを6つ
noteにしました。
スキルあろうが成果物だしてようが、
プロジェクトがストップしてしまうと、
どうしようもないです...https://t.co/tpdzxEaqBg#フリーランスエンジニア#駆け出しエンジニアと繋がりたい