簡體   English   中英

在Ruby中使用gem * basic *

[英]Using gems in Ruby *basic*

我是一個完整的新手。

我有一個要安裝和使用的gem,可以說是這個:

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.

現在要使用linkedin數據,我必須創建一個新對象並指定搜索。 所以我做:

**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)

因此,我顯然需要在此處使用“ linkedin數據” gem。 我補充說:

**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

問題出在寶石之內,請參閱下面的Doon答案。

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

++++更正gem如何在linkedindata.rb中要求“ linkedin_scraper”

發生下一個問題

 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")

當您使用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。

看起來gem本身在聲明依賴項以及依賴它的其他gem時有點破損。 我似乎能夠使其工作如下:

的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.rb require '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,因此它看上去很虛張聲勢,但不再出現庫錯誤)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM