【问题标题】:Uninitialized Constant from Gemfile来自 Gemfile 的未初始化常量
【发布时间】:2013-03-03 18:31:11
【问题描述】:

只是在玩 Ruby 并拥有这个非常基本的示例

runner.rb:

require "bundler/setup"
include Mongo

mongo_client = MongoClient.new("localhost", 27017)
#mongo_client.database_names # lists all database names
#mongo_client.database_info.each { |info| puts info.inspect }

db = mongo_client.db("james_safety")

coll = db.collection("safety")

puts "above"

10.times { |i| coll.insert("i" => i) }


puts "Hello World"

Gemfile:

source :rubygems
gem 'mongo'

bundle 输出:

Using bson (1.8.2) 
Using mongo (1.8.2) 
Using bundler (1.2.2) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

当我尝试运行ruby runner.rb 时,我得到了这个错误:

/Users/Tyler/Development/Ruby/JamesSaftey/runner.rb:2:in `<top (required)>': uninitialized constant Mongo (NameError)
    from -e:1:in `load'
    from -e:1:in `<main>'

如果我在runner.rb 中使用require 'mongo',它就可以正常工作(我在 Gemfile 之外安装了 gem)。

我也试过require 'rubygems'。没有不同。

我只是将我的 ruby​​ 文件配置错误以使用 Gemfile 吗?

Ruby 1.9.3

【问题讨论】:

    标签: ruby require gemfile


    【解决方案1】:

    即使 gem 位于 gemfile 中,您也需要它,或者在您的 ruby​​ 文件中执行以下操作,以便需要所有捆绑的 gem:

    Bundler.require(:default)
    

    More infos here

    【讨论】:

    • 第一部分(只是将require 添加到Gemfile 不起作用),但是,将Bundler.require(:default) 添加到ruby 文件确实有效。谢谢
    • 我的错,第一部分只是指示捆绑器需要哪个文件,如果它与 gem 名称不同。编辑...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多