0

我正在尝试使用最基本的 app.rb 运行 Sinatra 应用程序:

require 'sinatra/activerecord/rake'
require 'bundler/setup'
Bundler.require(:default)

require_relative './config'
require_relative './models/star'
require_relative './models/planet'
require_relative './models/moon'
require_relative './models/astronaut'

get '/' do 
  erb :index
end

使用 Bundle 并创建 Gemfile.lock 后,我不断收到此错误:

You have already activated activesupport 4.0.2, but your Gemfile requires activesupport 3.2.16. Using bundle exec may solve this. (Gem::LoadError)

我的 Rakefile 是:

source 'https://rubygems.org'

gem 'sinatra'
gem 'sinatra-reloader'
gem 'sinatra-activerecord'
gem 'activerecord', '~> 3.2.13'
gem 'rake'
gem 'pg'
gem 'pry'

我会很感激任何建议。

4

1 回答 1

4

您的系统上同时安装了 ActiveRecord 4.0.2 和 3.2.13。您的应用程序的第一行 requires sinatra/activerecord/rakewhich 反过来requiresactiverecord,但未指定哪个版本。这将激活并加载 4.0.2 – 最新版本。

在下一行中,您尝试设置 Bundler。Bundler 现在尝试激活您指定的 ActiveRecord 3.2.13 版本Gemfile,但由于版本已激活,因此无法激活,因此您收到错误消息。

要修复,只需确保在需要任何其他文件之前先require 'bundler/setup' 调用。这将确保您需要的任何文件都与您的Gemfile.

或者,您可以删除对 require 的调用,bundler/setup并确保您始终使用bundle exec.

于 2013-12-22T02:12:07.850 回答