2013-07-30 40 views
2

我已经将所有的attr_accessible改成了我的代码中的强参数,所以它可以在Rails 4.0中使用。我的应用在本地运行良好,但是当我推送到Heroku时,它抱怨说我的代码中有attr_accessible。这是我得到的错误:使用Rails 4.0 Heroku推attr_accessible错误

Running: rake assets:precompile 
    rake aborted! 
    `attr_accessible` is extracted out of Rails into a gem. Please use new recommended protection model for params(strong_parameters) or add `protected_attributes` to your Gemfile to use old one. 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activemodel-4.0.0/lib/active_model/deprecated_mass_assignment_security.rb:14:in `attr_accessible' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/lib/redactor-rails/orm/active_record.rb:20:in `block in extended' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/lib/redactor-rails/orm/active_record.rb:14:in `class_eval' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/lib/redactor-rails/orm/active_record.rb:14:in `extended' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/lib/redactor-rails/orm/active_record.rb:9:in `extend' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/lib/redactor-rails/orm/active_record.rb:9:in `included' 
    /tmp/build_12jc2ej0437ky/app/models/redactor_rails/asset.rb:20:in `include' 
    /tmp/build_12jc2ej0437ky/app/models/redactor_rails/asset.rb:20:in `<class:Asset>' 
    /tmp/build_12jc2ej0437ky/app/models/redactor_rails/asset.rb:19:in `<top (required)>' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:329:in `require_or_load' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:462:in `load_missing_constant' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:183:in `const_missing' 
    /tmp/build_12jc2ej0437ky/app/models/redactor_rails/document.rb:1:in `<top (required)>' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:329:in `require_or_load' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:462:in `load_missing_constant' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:183:in `const_missing' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/lib/redactor-rails.rb:31:in `document_model' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/app/controller/redactor_rails/documents_controller.rb:2:in `<class:DocumentsController>' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/redactor-rails-0.3.5/app/controller/redactor_rails/documents_controller.rb:1:in `<top (required)>' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:329:in `require_or_load' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:288:in `depend_on' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:206:in `require_dependency' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:465:in `block (2 levels) in eager_load!' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:464:in `each' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:464:in `block in eager_load!' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:462:in `each' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:462:in `eager_load!' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/engine.rb:347:in `eager_load!' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application/finisher.rb:56:in `each' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in `instance_exec' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:30:in `run' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:55:in `block in run_initializers' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/initializable.rb:54:in `run_initializers' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application.rb:215:in `initialize!' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/railtie/configurable.rb:30:in `method_missing' 
    /tmp/build_12jc2ej0437ky/config/environment.rb:5:in `<top (required)>' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application.rb:189:in `require_environment!' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/application.rb:249:in `block in run_tasks_blocks' 
    /tmp/build_12jc2ej0437ky/vendor/bundle/ruby/2.0.0/gems/sprockets-rails-2.0.0/lib/sprockets/rails/task.rb:54:in `block (2 levels) in define' 
    Tasks: TOP => environment 
    (See full trace by running task with --trace) 
! 
!  Precompiling assets failed. 
! 

!  Push rejected, failed to compile Ruby/Rails app 

To [email protected]:scratch-cms.git 
! [remote rejected] master -> master (pre-receive hook declined) 

对发生了什么事情有任何想法?它可能是宝石?它可能是设计?

回答

0

我解决了我的问题。有问题的宝石是编排器。使用attr_accessible的0.3.5版本,而0.4版本则没有。一旦我在我的Gemfile中更改了版本,事情就起作用了。

2

我觉得你是对的,因为devise.It是因为在rails-4中,ActiveModel :: MassAssignmentSecurity已经被取出ActiveModel。但是,设计使用attr_accessible,因此要使用它,只需在您的Gemfile中添加以下gem并尝试再次加载。

gem 'protected_attributes' 

现在devise支持rails-4。试试这个色器件版本,它会帮助你

gem 'devise', '3.0.0.rc' 

编辑: 那么我会建议你使用这个link它是给你一些想法。

+0

我试过设计3.0.0非rc版本(官方版本已经发布),它仍然不起作用。我不想使用protected_attributes gem,因为它就像使用胶带一样,而不是最好的修补程序。任何其他想法? – Jack

0

同样的问题。我这样

gem 'protected_attributes' 
gem 'devise' 
gem 'responders',   github: 'plataformatec/responders' 
gem 'inherited_resources', github: 'josevalim/inherited_resources' 
gem 'ransack',    github: 'ernie/ransack',   branch: 'rails-4' 
gem 'activeadmin',   github: 'gregbell/active_admin', branch: 'rails4' 
gem 'formtastic',   github: 'justinfrench/formtastic' 
+0

知道解决这个问题而不使用protected_attributes的其他方法吗?使用感觉就像在某物上使用胶带,而不是解决问题的最佳方法。 – Jack

0

我看到解决的有2个问题 - >

1)包括资产投放到您的Gemfile

# static asset serving and logging on Heroku 
gem 'rails_12factor', group: :production 

2)添加使用到任何属性您application_controller.rb

devise_parameter_sanitizer.for(:account_update) do |u| 
     u.permit(:name, :email, :password, :current_password, :password_confirmation, 
         :avatar, :firstname, :lastname, :userbio, :country, :gender) 
    end 

看看我的Application_Controller - >here

删除您的模型中的Attr可访问。