【问题标题】:spree install undefined method mass_assignment_sanitizer狂欢安装未定义的方法 mass_assignment_sanitizer
【发布时间】:2012-02-10 19:47:05
【问题描述】:

我在问题列表中查看了这个问题,但没有任何帮助。 这是我在stackoverflow中的第一个问题,所以如果我做错了什么,请接受我的道歉。另外我还有很多英语需要提高。

我正在按照 github 说明安装 Spree

$ gem install spree
$ rails new my_store
$ spree install my_store

当我收到这条消息时

...

Admin Password [spree123] 
gemfile  spree
gemfile  spree_usa_epay
gemfile  spree_skrill
     run  bundle install from "./my_store"
git://github.com/spree/spree_usa_epay.git (at 0cb57b4) is not checked out. Please run `bundle install`
precompiling  assets
git://github.com/spree/spree_usa_epay.git (at 0cb57b4) is not checked out. Please run `bundle install`

... 好吧,正如指南所建议的那样,如果出现循环依赖问题,请执行以下操作:

$ gem install spree_cmd

$spree install my_store -A

gemfile  spree
gemfile  spree_usa_epay
gemfile  spree_skrill
     run  bundle install from "./my_store"
git://github.com/spree/spree_usa_epay.git (at 0cb57b4) is not checked out. Please run `bundle install`
precompiling  assets
git://github.com/spree/spree_usa_epay.git (at 0cb57b4) is not checked out. Please run `bundle install`

我将目录更改为应用程序并运行命令:

$cd my_store

$bundle install 

我收到以下错误

Bundler could not find compatible versions for gem "rails":
In Gemfile:
spree_usa_epay (>= 0) ruby depends on
  rails (<= 3.1.3, >= 3.1.1) ruby

rails (3.2.1)

在此之后,我更改了 gem 文件以使用 rails 3.1.3 和 coffeescript gems,并再次重复整个过程,我得到了这个。

Users/Snake/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-  3.1.3/lib/active_record/base.rb:1088:in `method_missing': undefined method  `mass_assignment_sanitizer=' for ActiveRecord::Base:Class (NoMethodError)
from /Users/Snake/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.3/lib/active_record/railtie.rb:59:in `block (3 levels) in <class:Railtie>'

它认为它可能与 Rails 版本有关,但我不知道要开始。

以前有人遇到过这个问题吗?

我运行的是 Mac OS X 10.5.8

导轨 3.2.1

ruby 1.9.3p0(2011-10-30 修订版 33570)[i386-darwin9.8.0]

ImageMagick @6.7.4-6_0+q16

【问题讨论】:

    标签: ruby-on-rails-3 gem installation spree


    【解决方案1】:

    正如@Anatoly Ruchka 所说,问题出在使用rails 3.2.1,所以我切换到3.1.3。

    这就是我所做的,我找到了@vonconrad 的帖子,他在其中解释了如何在不接触安装的情况下创建铁路项目。

    1) 我为我的项目创建了一个目录文件夹:

    $mkdir old_rails313
    $cd old_rails313
    $touch gemfile
    $nano gemfile
    

    2) 我粘贴了一个 gemfile 定义,指定你提到我想要的 rails 版本,所以它看起来像这样

    source 'http://rubygems.org'
    gem 'rails', '3.1.3'
    gem 'sqlite3'
    group :assets do
      gem 'sass-rails',   '~> 3.1.5'
      gem 'coffee-rails', '~> 3.1.1'
      gem 'uglifier', '>= 1.0.3'
    end
    gem 'jquery-rails'
    gem "rspec-rails", ">= 2.8.0.rc1", :group => [:development, :test]
    gem "factory_girl_rails", ">= 1.4.0", :group => :test
    gem "cucumber-rails", ">= 1.2.0", :group => :test
    gem "capybara", ">= 1.1.2", :group => :test
    gem "database_cleaner", ">= 0.7.0", :group => :test
    gem "launchy", ">= 2.0.5", :group => :test
    #gem "devise", ">= 1.5.0"
    gem 'spree','1.0.0'
    

    3) 然后我跑

    bundle install
    bundle exec rails new .
    rails g spree:install
    rails s
    

    安装后我和 gem 'spree','1.0.0' 有冲突,所以我把它注释掉。

    我也收到了警告,但它有效:

    [DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.attributes.spree/order" is no longer supported
    

    非常感谢

    【讨论】:

    • 创建一个空文件,但你可以直接用你的文本编辑器来做
    • 不再与 gem 'spree', '1.0.3' 冲突
    【解决方案2】:

    我认为你应该为 spree_usa_epay 使用 rails 3.1.3 版

    为此,您应该卸载机器上的所有导轨

    观看使用

    gem list -d rails
    

    sudo gem uninstall rails -v ...
    

    并使用

    创建新项目
    rails new my_store
    

    编辑 Gemfile 并粘贴

    宝石'狂欢','1.0.0'

    bundle install
    

    干得好

    rails server
    

    【讨论】:

    • 感谢您的提示!但我采取了第二种选择,不要碰我的导轨装置。但无论如何,你的回答对我帮助很大。
    猜你喜欢
    • 2017-08-20
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多