我正在尝试使用虾宝石。我只是在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]
我做错了什么?任何帮助都是最有用的。
答案 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
会工作!!!