Приложение Rails API: (No MethodError), когда я запускаю команду запуска

Я только что создал новое приложение Rails API и пытаюсь запустить его в первый раз. У меня установлен драгоценный камень мастера, и я использую команду

  foreman start

чтобы запустить сервер, но я получаю эти ошибки:

 Exiting
 21:52:55 web.1  |
 /Users/AM/Documents/RailsWS/app1229/config/initializers/wrap_parameters.rb:8:in 
 `block in <top (required)>':
 undefined method `wrap_parameters' for ActionController::API:Class (NoMethodError)
 21:52:55 web.1  |  
 from /Users/AM/.rvm/gems/ruby-1.9.3-p194-gemset/gems/activesupport-
 3.2.8/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
 21:52:55 web.1  |  
 from /Users/AM/.rvm/gems/ruby-1.9.3-p194-gemset/gems/activesupport- 
 3.2.8/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
 21:52:55 web.1  |  
 from /Users/AM/.rvm/gems/ruby-1.9.3-p194-gemset/gems/activesupport-
 3.2.8/lib/active_support/lazy_load_hooks.rb:26:in `block in on_lo
  ..........

Я пытался обновить набор драгоценных камней, перезагрузить терминал и т. Д.

Однако ничего не работает. Интересно, может ли кто-нибудь дать представление о том, как действовать при диагностике источника этой ошибки.

Спасибо


РЕДАКТИРОВАТЬ Вот содержимое ApplicationController.rb

 class ApplicationController < ActionController::API 
   include ActionController::MimeResponds 
   include ActionController::ImplicitRender 

 end

гемфайл:

 source 'https://rubygems.org'
 gem 'rails', '3.2.8'
 gem 'rails-api'
 gem 'pg'
 gem 'thin'
 gem 'foreman'
 gem 'rabl'
 gem "paperclip"
 gem 'aws-sdk'
 group :development do
gem 'annotate', :git=>'git://github.com/ctran/annotate_models.git'
gem 'debugger'
 end

Ошибка указывает на строку 8 в этом файле: wrap_parameters.rb

 # Be sure to restart your server when you modify this file.
 #
 # This file contains settings for ActionController::ParamsWrapper which
 # is enabled by default.

 # Enable parameter wrapping for JSON. You can disable this by setting :format to an    
   empty array.
 ActiveSupport.on_load(:action_controller) do
   ERROR >>>>  wrap_parameters format: [:json]
 end

 # Disable root element in JSON by default.
  ActiveSupport.on_load(:active_record) do
  self.include_root_in_json = false
 end

person banditKing    schedule 30.12.2012    source источник
comment
Можете ли вы подтвердить, что ActionController::API наследует ActionController::Base?   -  person bricker    schedule 30.12.2012
comment
Вот содержимое моего файла application.rb: class ApplicationController ‹ ActionController::API include ActionController::MimeResponds include ActionController::Helpers include ActionController::Cookies end Помогает ли это? Объяснить?   -  person banditKing    schedule 30.12.2012
comment
Будет ли результат таким же, если вы просто rails server вместо foreman start?   -  person cfeduke    schedule 30.12.2012
comment
Да: ruby-1.9.3-p194 AM@~/Documents/RailsWS/app1229 ›rails s =› Booting Thin =› Приложение Rails 3.2.8, находящееся в разработке 0.0.0.0:3000 => Вызов с -d для отсоединения => Ctrl-C для выключения сервера Выход из /Users/AM/Documents/RailsWS/app1229/config/initializers/wrap_parameters .rb:8:in block in <top (required)>': undefined method wrap_parameters для ActionController::API:Class (NoMethodError)   -  person banditKing    schedule 30.12.2012
comment
Это может иметь какое-то отношение к набору драгоценных камней, но я не уверен, что   -  person banditKing    schedule 30.12.2012
comment
Поэтому я закомментировал эту ОШИБКУ, создающую строку: ActiveSupport.on_load(:action_controller) do #wrap_parameters format: [:json] end И сервер загружается нормально. Безопасно ли это делать?   -  person banditKing    schedule 30.12.2012


Ответы (2)


Проблема в wrap_parameters исправлена ​​в версии 0.0.3 rails-api, но для ранее сгенерированных приложений мы должны заменить первый блок кода в initializers/wrap_parameters.rb на этот:

ActiveSupport.on_load(:action_controller) do
  include ActionController::ParamsWrapper
  wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
end

Я проверил это прямо сейчас в одном из моих приложений heroku и отлично работает. Больше не нужно переписывать код в полнофункциональных рельсах :)

person Nacho L.    schedule 11.01.2013
comment
Это было так прекрасно, что я просто должен был сказать спасибо, хотя прошло много времени с тех пор, как вы ответили на этот вопрос. Спасибо! - person Mizuho; 07.03.2013

У вас есть Procfile в корне каталога вашего проекта Rails? Для самой простой настройки мои Procfiles обычно выглядят так:

web: bundle exec thin start -p $PORT

(Конечно, вам также понадобится gem 'thin' в вашем Gemfile.)

person cfeduke    schedule 30.12.2012
comment
Это содержимое моего файла PROC, когда я получаю сообщение об ошибке: web: bundle exec rails server thin -p $PORT -e $RACK_ENV У меня также установлен тонкий драгоценный камень - person banditKing; 30.12.2012
comment
Попробуйте заменить конфигурацию, указанную выше, и посмотрите, будет ли это иметь значение. - person cfeduke; 30.12.2012
comment
К сожалению, все еще получаю ту же ошибку. Может ли это иметь какое-то отношение к моему набору камней? - person banditKing; 30.12.2012
comment
Попробуйте удалить каждый из включенных модулей в ApplicationController, по одному, пока ошибка не исчезнет. Я подозреваю, что один из этих модулей мешает. - person cfeduke; 30.12.2012
comment
Хм. не работает. Почему-то так обидно. Я не уверен, что делать :( - person banditKing; 30.12.2012
comment
Вы захотите опубликовать содержимое своего ApplicationController, а также свой Gemfile на свой вопрос, чтобы мы могли разобраться в этом. - person cfeduke; 30.12.2012