我有一个使用珠宝商创建的小应用程序。珠宝商生成一个lib /目录,我想在那里编写我的代码。
我正在创建的这个gem依赖于httparty gem,因此,在我的Rakefile中我放了
Jeweler::Tasks.new do |gem|
gem.add_dependency('httparty', '>= 0.4.5')
...
end
在我的实施文件中,我把
require 'httparty'
但是当我执行它时,我得到:
lib / my_app.rb:1:在`require'中:没有要加载的文件 - httparty(LoadError)
我已经使用
安装了httparty gemsudo gem install httparty
缺少什么?
答案 0 :(得分:8)
在需要任何宝石之前,你需要要求rubygems。
require 'rubygems'
require 'httparty'
答案 1 :(得分:1)
你需要要求rubygems
require 'rubygems'
在您需要httparty
之前答案 2 :(得分:1)
如果你这样做
require "httparty"
ruby正在不同的位置搜索httparty.rb或httparty.so。 ruby搜索的位置以及存储在全局变量$:
中的顺序在我的debian系统上,它看起来像这样:
$: # => ["/usr/local/lib/site_ruby/1.8", "/usr/local/lib/site_ruby/1.8/x86_64-linux", "/usr/local/lib/site_ruby", "/usr/lib/ruby/vendor_ruby/1.8", "/usr/lib/ruby/vendor_ruby/1.8/x86_64-linux", "/usr/lib/ruby/vendor_ruby", "/usr/lib/ruby/1.8", "/usr/lib/ruby/1.8/x86_64-linux", "."]
但httparty.rb位于/var/lib/gems/1.8/gems/httparty-0.4.5/lib/httparty.rb,因此无法找到。当你这样做
require "rubygems"
更改了内核#require方法,以查找rubygems。
要求“rubygems”使您的代码平台依赖:
在我的debian系统上,我将每个rubygems库符号链接到/usr/local/lib/site_ruby/1.8/,此路径包含在标准搜索路径($ :)中。您可以在http://tomayko.com/writings/require-rubygems-antipattern找到更多相关信息。
答案 3 :(得分:0)
Some people do not consider it good practise要求可分发代码中的rubygems。在从应用程序代码加载自己的新gem之前,解决方案是require rubygems
。 (无论如何你都需要这样做)
答案 4 :(得分:0)
我遇到同样的问题:
gem "httparty", :git => 'https://github.com/jnunemaker/httparty.git'
当我转向:
gem "httparty"
一切都开始奏效了。
答案 5 :(得分:0)
当您尝试使用Ruby创建http帖子但尚未完成设置Rubygems和RVM时,可能会发生此错误。
首先,使用以下教程检查rubygems和rubygems-update是否正确安装:http://docs.rubygems.org/read/chapter/3
如果你正在使用RVM,你还需要创建一个gemset并首先选择一个ruby版本。
$ rvm gemset list
如果显示您已启用(默认),则需要配置RVM。
找到你想要使用的ruby版本($ ruby -v)将起作用并在此处替换它:
$ rvm使用1.9.2-head@albinochipmunk --create
$ gem install httparty
使用sudo安装httparty可能会破坏RVM配置,因此您需要避免这种情况。此外,使用新的RVM gemset意味着您可能需要重新安装一些宝石。