Ubuntu红宝石宝石的位置

时间:2016-03-07 06:53:14

标签: ruby ubuntu rubygems

我正在尝试使用虾宝石。我只是在ubuntu机器上尝试基本的hello world示例。

require 'prawn'
Prawn::Document.generate("hello.pdf") do
text "Hello World!"
end

第一个问题是我使用的是ruby 1.9.1,它产生了一个错误并说它需要ruby 2.0,所以使用RVM我更新到2.2.1。但是每次我运行这个,我都会收到此错误

  

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require': cannot load such file -- prawn (LoadError) from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in要求'来自   prawnpdf.rb:1:在''

现在我是Ubuntu和ruby的新手,但是我认为问题是它正在寻找我安装的虾宝石的错误位置,即它正在寻找红宝石的旧版本。

当我运行$ ruby -v时 我得到了

ruby 2.2.1p85 (2015-02-26 revision 49769) [i686-linux]
我做错了什么?任何帮助都是最有用的。

3 个答案:

答案 0 :(得分:0)

每次使用rvm切换ruby版本时,都会开始使用新的gemset。以前安装 System.out.println("Logged in with fb"); Bundle params = new Bundle(); _accesToken = _sPrefsFB.getString("access_token", ""); System.out.println("_accesToken Bundle : " + _accessToken); params.putString("access_token", _accessToken); _imagesList.clear(); mAsyncRunner.request("/me/albums" ,params,"GET", new RequestListener() { @Override public void onComplete(String response, Object state) { // Log.d("Photos Album ", response); //need to set album adapter if (response!=null&&!response.equalsIgnoreCase("")) { // System.out.println("Response of fb album : " +response); try { JSONObject _jObjectMain = new JSONObject(response); JSONArray _jArrayMain = _jObjectMain.getJSONArray("data"); System.out.println("Size of Album list fb : " + _jArrayMain.length()); if (_jArrayMain.length()>0) { _albumListFB.clear(); for (int i = 0; i < _jArrayMain.length(); i++) { JSONObject _jObjectSub = _jArrayMain.getJSONObject(i); FaceBookAlbumBean _bean = new FaceBookAlbumBean(); if (_jObjectSub.has("id")) { String _albumID = _jObjectSub.getString("id"); _bean.set_albumID(_albumID); } if (_jObjectSub.has("name")) { String _albumName = _jObjectSub.getString("name"); _bean.set_albumName(_albumName); } _albumListFB.add(_bean); } //need to call fb images ws Bundle params = new Bundle(); _accesToken = _sPrefsFB.getString("access_token", ""); System.out.println("_accesToken Bundle : " + _accessToken); params.putString("access_token", _accessToken); for (int i = 0; i < _albumListFB.size(); i++) { String _albumID = _albumListFB.get(i).get_albumID(); mAsyncRunner.request("/"+_albumID+"/photos" ,params,"GET", new RequestListener() { @Override public void onComplete(String response, Object state) { Log.d("PHotos from album", response); if (response!=null&&!response.equalsIgnoreCase("")) { try { JSONObject _jObjectMain = new JSONObject(response); if (_jObjectMain.has("data")) { JSONArray _jArrayMain = _jObjectMain.getJSONArray("data"); if (_jArrayMain.length()>0) { for (int i = 0; i < _jArrayMain.length(); i++) { JSONObject _jObjectSub = _jArrayMain.getJSONObject(i); CameraRollBean _bean = new CameraRollBean(); if (_jObjectSub.has("images")) { JSONArray _jArraySub = _jObjectSub.getJSONArray("images"); if (_jArraySub.length()>0) { System.out .println("Image Array length : " + _jArraySub.length()) ; JSONObject _jObjectSub1 = _jArraySub.getJSONObject(_jArraySub.length()-1); if (_jObjectSub1.has("source")) { String _source = _jObjectSub1.getString("source"); /*System.out .println("Source Image : " +_source);*/ _bean.setFilePath(_source); } } } _imagesList.add(_bean); } } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("_imagesList Size : " +_imagesList.size()); } @Override public void onIOException(IOException e, Object state) { } @Override public void onFileNotFoundException(FileNotFoundException e, Object state) { } @Override public void onMalformedURLException(MalformedURLException e, Object state) { } @Override public void onFacebookError(FacebookError e, Object state) { } },null); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Override public void onIOException(IOException e, Object state) { } @Override public void onFileNotFoundException(FileNotFoundException e, Object state) { } @Override public void onMalformedURLException(MalformedURLException e, Object state) { } @Override public void onFacebookError(FacebookError e, Object state) { } },null); // } 并不意味着它当前已安装,并且错误消息表明它未安装。所以:

prawn

然后

rvm use 2.2.1

然后你的代码应该可以工作。

答案 1 :(得分:0)

我建议您为项目创建Gemfile,以便更容易维护依赖项。 查看详情:http://bundler.io/

然后cd进入你的项目目录并安装包(一次或更改后)并运行你的ruby脚本:

cd my_project
bundle install
ruby my_thing.rb

如果您不能/不想使用bundler:您需要为每个ruby重新安装Gem。

答案 2 :(得分:0)

按照给定的步骤进行操作。

1: rvm list

rvm rubies

   ruby-2.0.0-p643 [ x86_64 ]
   ruby-2.2.1 [ x86_64 ]
=* ruby-2.2.4 [ x86_64 ]

2: rvm use < ruby-version >#for instances ruby​​-1.9.3-p125

rvm use 2.2.1

3: gem install prawn

会工作!!!