2

新しい 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
  ..........

gemsetの更新や端末の再起動などを試みました。

しかし、何も機能していません。このエラーの原因の診断を進める方法について、誰かがアイデアを提供できるかどうか疑問に思っています

ありがとう


EDIT 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
4

2 に答える 2

9

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アプリの1つでそれをテストしましたが、完璧に動作します. フル機能のレールでコードを書き直す必要はもうありません:)

于 2013-01-11T10:51:03.633 に答える
0

Rails プロジェクト ディレクトリのルートに がありますかProcfile? 最も単純なセットアップの場合、Procfiles は通常次のようになります。

web: bundle exec thin start -p $PORT

(もちろんgem 'thin'、Gemfile にも必要です。)

于 2012-12-30T06:06:35.673 に答える