Category Archives: Code

Exceptions I Bumped into on Upgrading from Cells 3 to Cells 4


Here are some exceptions I bumped into on upgrading from Cells 3 gem to Cells 4. ここにある対処法は、 それぞれの Cell クラス に対して行ってもいいですが、 it is easier to create the parent class, ApplicationCell.

対処した最終結果は Rails: Cells 3 から Cells 4 へのアップグレード に記載しています。

Exception: undefined method helper_method

The following error was raised in lib/devise/controllers/helpers.rb. The version of device gem I used at that time was 3.5.2.

undefined method `helper_method’ for XyzCell:Class

Add the following code to Cell class.

It is empty method but there’s no problem. With Cells 3, we have to call self.helper_method but with Cells 4 we don’t have to do that and its method was removed.

Reference: apotonick/cells Issue Not working with react-rails

Exception in dom_class

The following exception may occur.

undefined method `dom_class’ for #<XyzCell:0x007ff36d4fecb0>

Add the following code to Cell class.

Reference: apotonick/cells Troubleshooting

Exception concerns number_with_delimiter is raised

Add include ActionView::Helpers::NumberHelper to Cell class.

Exception because of select tag can’t be used

The following message will be shown.

private method `select’ called for #<XyzCell:0x007ff48f4febe8>

Add include ActionView::Helpers::FormOptionsHelper to Cell class.

Reference: apotonick/cells Issue select form_helper doesn’t work in cells 4


Rails: How to Solve devise error undefined method failure_app for nil class


I bumped into the following error when I was creating API program. The origin was devise gem.

NoMethodError (undefined method `failure_app’ for nil:NilClass)

Environment

  • Ruby 2.2.3p173
  • Rails 4.2.4
  • devise 3.5.2

Origin

I used sign_in method for unauthorized user.

The API in construction, we have to make unauthorized user able to login, so I wrote logging in procedure for all users, including unauthorized users. Then, devise and warden rejected unauthorized user and raised error.

Solution

Write the following setting into config/initializer/devise.rb.

Or write the following method into the model class that is used by devise for authentication. User class for example.

I recommend latter solution.

confirmation_period_valid?

confirmation_period_valid? method is defined at the module Devise::Models::Confirmable of devise gem.