【问题标题】:Developing new webapp Rails MongoDB开发新的 webapp Rails MongoDB
【发布时间】:2016-07-08 03:58:39
【问题描述】:

我不断收到 activemodel 的不兼容问题。当前的错误是;

Bundler could not find compatible versions for gem "activemodel":
  In Gemfile:
    mongoid (~> 4.0.0) was resolved to 4.0.0, which depends on
      activemodel (~> 4.0)

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on
      activemodel (= 5.0.0)

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on
      activemodel (= 5.0.0)

我目前的版本是;

  • Rails 5.0.0
  • 红宝石 2.2.2p95
  • Mongo 版本:3.2.6

在另一条类似的行中,我将我的 webapp 设置为没有活动记录,并且还卸载了 gem,但它似乎总是在我的 gemfile 中重新出现。

在创建我的 web 应用时 -

rails new test-app --skip-active-record --skip-test-unit

宝石文件:

source 'https://rubygems.org'
gem 'rails', '~> 5.0.0'

group :assets do
        # Use SCSS for stylesheets
        gem 'sass-rails', '~> 5.0'
        # Use Uglifier as compressor for JavaScript assets
        gem 'uglifier'
        # Use CoffeeScript for .coffee assets and views
        gem 'coffee-rails'
end
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Mongo linker
gem 'mongoid', git: 'https://github.com/estolfo/mongoid.git'
# Turbolinks makes navigating web application faster.
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder'
group :development do
  gem 'better_errors'
  gem 'binding_of_caller', :platforms=>[:mri_19, :mri_20, :rbx]
  gem 'quiet_assets'
end
#Rspec for unit testing
gem "rspec-rails", :group => [:development, :test]
gem 'figaro'
gem "capybara", :group => :test
gem "database_cleaner", :group => :test
gem "mongoid-rspec", :group => :test
gem "email_spec", :group => :test
gem "cucumber-rails", :group => :test, :require => false
gem "launchy", :group => :test
gem "factory_girl_rails", :group => [:development, :test]
gem "devise"
gem 'therubyracer', platforms: :ruby

一旦我专门更改了我的 Gemfile,mongoid

gem 'mongoid', git: 'https://github.com/estolfo/mongoid.git', branch: 'MONGOID-4218-rails-5'

错误来了-

Bundler could not find compatible versions for gem "activesupport":
  In Gemfile:
    mongoid was resolved to 6.0.0, which depends on
      activemodel (= 5.0.0.beta3) was resolved to 5.0.0.beta3, which depends on
        activesupport (= 5.0.0.beta3)

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on
      activesupport (= 5.0.0)

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on
      activesupport (= 5.0.0)

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on
      activesupport (= 5.0.0)

【问题讨论】:

标签: ruby-on-rails ruby mongodb web-applications


【解决方案1】:

我能够使用您在问题中提供的步骤以及您的Gemfile 重新创建您的开发环境。就我而言,我已经设法解决了您提到的冲突并安装了mongoid gem,如下所示。

首先,我不知道您为什么使用来自official mongoid repository 的分叉回购。这样,我决定使用官方 gem 并更改了 Gemfile 中的行(尽管我认为如果您想从其他 repo 安装 gem,此解决方案仍然有效):gem 'mongoid'

之后,我执行了bundle install 并得到以下错误:

Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    quiet_assets (>= 1.0.2) was resolved to 1.0.2, which depends on
      railties (< 5.0, >= 3.1)

    rails (~> 5.0.0) was resolved to 5.0.0, which depends on
      railties (= 5.0.0)

    rspec-rails was resolved to 3.5.1, which depends on
      railties (>= 3.0)

    sass-rails (~> 5.0) was resolved to 5.0.5, which depends on
      railties (< 6, >= 4.0.0)

检查输出我发现有冲突的 gem 是 quiet_assets。考虑到这一点,我访问了quiet_assets GitHub repository,并在其 README.md 中找到了以下内容:

弃用

从 sprockets-rails 版本 3.1.0 开始,用于当前版本的 rails,这个 gem 已被弃用。

资产管道现在支持抑制输出的安静选项 资产请求数:

# config/environments/development.rb

config.assets.quiet = true

相关公关:https://github.com/rails/sprockets-rails/pull/355

看来这个gem的功能现在可以在你的Rails环境文件中添加这一小块配置了,所以我从Gemfile中删除了需要quiet_assets的行,留下文件如下:

source 'https://rubygems.org'
gem 'rails', '~> 5.0.0'

group :assets do
        # Use SCSS for stylesheets
        gem 'sass-rails', '~> 5.0'
        # Use Uglifier as compressor for JavaScript assets
        gem 'uglifier'
        # Use CoffeeScript for .coffee assets and views
        gem 'coffee-rails'
end
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Mongo linker
gem 'mongoid'
# Turbolinks makes navigating web application faster.
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder'
group :development do
  gem 'better_errors'
  gem 'binding_of_caller', :platforms=>[:mri_19, :mri_20, :rbx]
end
#Rspec for unit testing
gem "rspec-rails", :group => [:development, :test]
gem 'figaro'
gem "capybara", :group => :test
gem "database_cleaner", :group => :test
gem "mongoid-rspec", :group => :test
gem "email_spec", :group => :test
gem "cucumber-rails", :group => :test, :require => false
gem "launchy", :group => :test
gem "factory_girl_rails", :group => [:development, :test]
gem "devise"
gem 'therubyracer', platforms: :ruby

再执行一次bundle install后,这一次所有的依赖都安装成功了。

我希望这可以帮助你。如果此解决方案不符合您的需求,请告诉我。

【讨论】:

    【解决方案2】:

    使用 gem uninstall rails 卸载 Rails。

    您目前拥有 Rails 5.0.0,但您需要来自 5.0.0.beta3 的积极支持。

    所以你应该运行gem install rails -v 5.0.0.beta3

    然后试试rails new

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2018-10-02
      相关资源
      最近更新 更多