开发者

Rails 3: "uninitialized constant Formtastic::FormBuilder" error after deploying app on production server

开发者 https://www.devze.com 2023-03-15 02:06 出处:网络
I am trying to deploy my Rails3.0 application on production server. There was many troubles before, but all of them solved. And now I have another.

I am trying to deploy my Rails3.0 application on production server. There was many troubles before, but all of them solved. And now I have another.

There is a passenger error page's text:

Error message: uninitialized constant Formtastic::FormBuilder

Exception class: NameError

Backtrace:

0 /home/ubuntu/.rvm/gems/ruby-1.9.2-p180@rails3.0/gems/client_side_validations-3.1.0/lib/client_side_validations/formtastic.rb 20 in `'

1 /home/ubuntu/projects/questroad/config/initializers/client_side_validations.rb 4 in ' 2 /home/ubuntu/.rvm/gems/ruby-1.9.2-p180@rails3.0/gems/railties-3.0.7/lib/rails/engine.rb 201 inblock (2 levels) in '

3 /home/ubuntu/.rvm/gems/r开发者_开发知识库uby-1.9.2-p180@rails3.0/gems/railties-3.0.7/lib/rails/engine.rb 200 in `each'

...

Google search results not helped me, and now I am here.

UPD: Also if i try to run WEBrick server there was the same error.

UPD: I try to comment "gem 'client_side_validation'" line in Gemfile, and error is disappeared. But now i cant use this gem.


I experience the same issue but not on the production, i got this error in the development after doing a:

bundle update

and then try to run my rspecs.

It seems that bundle update, installed client_side_validations 3.1.0 which seems to make problems ( ... not sure why, I don't have the time to analyze it atm), however using a fixed version in the Gemfile solved it:

gem 'client_side_validations', '3.0.5' 

hope it helps!


This happening because you have Formtastic 1.x installed. The 3.1.x version of ClientSideValidations expects Formtastic 2.


Check if you have formtastic gem installed.

Also run this on production machine

bundle install --deployment

As this will install all the gems to location which passenger can find. Sometimes, it happens that passenger can't find the gem paths.


I don't know if you have follow this process but i recomand you to wrap your passenger with your gemset and start with RVM for independent passenger mode

rvm wrapper ruby-1.9.2-p180@rails3.0 passenger

and for start for example like this :

rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.2-p180@rails3.0' -c \
    'cd /<your app PATH>/current/ && bundle exec passenger start -a 127.0.0.1 -p 3000 -d
0

精彩评论

暂无评论...
验证码 换一张
取 消