【问题标题】:Error while running a Sinatra Application运行 Sinatra 应用程序时出错
【发布时间】:2014-01-10 11:19:18
【问题描述】:

我正在尝试使用最基本的 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'

如有任何建议,我将不胜感激。

【问题讨论】:

  • 尝试运行bundler exec rackup。自从我这样做以来已经有一段时间了,但我认为这将在捆绑包的上下文中运行。

标签: ruby rubygems sinatra bundler sinatra-activerecord


【解决方案1】:

您的系统上同时安装了 ActiveRecord 4.0.2 和 3.2.13。你的应用程序的第一行需要sinatra/activerecord/rake,然后是requires activerecord,没有指定哪个版本。这将激活并加载 4.0.2 - 最新版本。

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

要解决此问题,只需确保在需要任何其他文件之前调用require 'bundler/setup'first。这将确保您需要的任何文件都与您的Gemfile 兼容。

或者,您可以删除对 require bundler/setup 的调用,并确保始终使用 bundle exec 启动您的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2018-10-03
    • 1970-01-01
    • 2012-04-02
    • 2016-10-07
    相关资源
    最近更新 更多