2015-10-16 48 views
1

我是一個完整的新手。在Ruby中使用寶石*基本*

我有一塊寶石,我想安裝和使用,讓我們說這是這一個:

https://rubygems.org/gems/linkedindata/versions/0.0.22

我使用CMD:

gem install linkedindata 
#1 gem installed 

之後,我將它添加到我的的Gemfile:

gemrat 'linkedindata' 
#gem 'linkedindata', '0.0.22' added to your Gemfile. 

現在使用linkedindata我要創建一個新的對象和規範如果我的搜索。所以,我做的:

**test.rb** 
l = LinkedinData.new(1, "c:/users/proxylist.txt", true, true) 
searchTerms = ['First', 'Second', 'Third'] 
l.getByKeywords(searchTerms) 

現在我從命令提示符下運行test.rb:

test.rb:1:in `<main>': undefined local variable or meth 
od `linkedindata' for main:Object (NameError) 

所以,我顯然需要在這裏需要 'linkedindata' 寶石。我說:

**test.rb** 
require 'LinkedinData' 
l = LinkedinData.new(1, "c:/users/proxylist.txt", true, true) 
searchTerms = ['First', 'Second', 'Third'] 
l.getByKeywords(searchTerms) 

我得到以下錯誤:

C:/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `re 
quire': cannot load such file -- linkedin-scraper (LoadError) 
     from C:/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require 
.rb:54:in `require' 
     from C:/Ruby22/lib/ruby/gems/2.2.0/gems/linkedindata-0.0.22/lib/linkedin 
data.rb:1:in `<top (required)>' 
     from C:/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require 
.rb:128:in `require' 
     from C:/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require 
.rb:128:in `rescue in require' 
     from C:/Ruby22/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require 
.rb:39:in `require' 
     from C:/Users/test.rb:1:in `<main>' 

我在做某種根本性錯誤嗎?或者這個寶石有問題嗎?

UPDATE

的問題是創業板中,見下文遁的答案。

require 'rubygems' 
require 'bundler/setup' 
require 'linkedindata' 
l = LinkedinData.new(1, "proxylist.txt", true, true) 
searchTerms = ['First', 'Second', 'Third'] 
l.getByKeywords(searchTerms) 

++++糾正寶石如何要求 「linkedin_scraper」 在linkedindata.rb

發生

C:/Ruby22/lib/ruby/gems/2.2.0/gems/linkedindata-0.0.22/lib/linkedin.rb:6:in `<cl 
ass:Profile>': uninitialized constant Linkedin::Profile::ProxyManager (NameError 
) 
     from C:/Ruby22/lib/ruby/gems/2.2.0/gems/linkedindata-0.0.22/lib/linkedin 
.rb:5:in `<module:Linkedin>' 
     from C:/Ruby22/lib/ruby/gems/2.2.0/gems/linkedindata-0.0.22/lib/linkedin 
.rb:4:in `<top (required)>' 
     from linkedinscrape.rb:4:in `require' 
     from linkedinscrape.rb:4:in `<main>' 

這顯然與代理設置,下一步的問題。清單:

**proxylist.txt** 
220.248.224.242:8089 
165.139.179.225:8080 
54.207.114.172:3333 
190.63.174.246:8081 

的方式我加載它:

l = LinkedinData.new(1, "c:/users/proxylist.txt") 

回答

2

由於您使用的是Gemfile,您使用的捆綁。在您的腳本中,您需要包含rubygemsbundler才能使其正常工作。試試這個

require 'rubygems' 
require 'bundler/setup' 

require 'linkedindata' 

l = LinkedinData.new(1, "c:/users/proxylist.txt", true, true) 
searchTerms = ['First', 'Second', 'Third'] 
l.getByKeywords(searchTerms) 

您已經運行bundle install,對不起,不熟悉gemrat,所以不知道多少呢你。

如果你實際上沒有使用bundler,只是從上面的代碼中刪除require 'bundler/setup',你仍然需要在你的腳本中需要rubygems。

看起來像寶石本身有點破壞它聲明依賴關係的方式,以及它依賴的其他寶石。我似乎能夠使它的工作方式如下:

的Gemfile:

source 'https://rubygems.org' 
gem 'linkedin-scraper' 
gem 'linkedindata' 
gem 'generalscraper' 
gem 'uploadconvert' 
gem 'docsplit' 
gem 'crack' 
gem 'pry' 
gem 'activesupport' 
gem 'selenium-webdriver' 

還顯示出它的linkedin-scraper需求,需要作爲linkedin_scraper但不知道這是爲什麼。所以編輯。

{GEMPATH}/linkedindata-0.0.22/lib/linkedindata.rbrequire 'linkedin_scraper'而不是require 'linkedin-scraper'似乎使它的工作。

因此,與上述的變化,並使用捆綁

require 'rubygems' 
require 'bundler/setup' 
require 'linkedindata' 
l = LinkedinData.new(1, "proxylist.txt", true, true) 
searchTerms = ['First', 'Second', 'Third'] 
l.getByKeywords(searchTerms) 

現在運行(我沒有proxylist.txt所以它吹起來尋找它,但它不會再庫錯誤)。

+0

解決了一些錯誤,但我仍然得到:'C:/Ruby22/lib/ruby/gems/2.2.0/gems/linkedindata-0.0.22/lib/linkedindata.rb:1: 'require':無法加載這樣的文件 - linkedin-scraper(LoadError) from C:/Ruby22/lib/ruby/gems/2.2.0/gems/linkedindata-0.0.22/lib/linkedin data.rb:1:in < '要求' 來自C:/Users/test.rb:4:'

'' – user3471881

+0

嗯看起來,寶石doesn'在'要求'' '從'C:/Users/test.rb'沒有它的依賴關係。你可以嘗試添加'gem'linkedin-scraper'',但我也有問題得到它加載,並不知道爲什麼... – Doon

+0

好吧,它似乎像寶石本身有點破,並沒有宣佈全部它的依賴關係正確..將用我發現的內容編輯... – Doon