在 Ruby *基本*中使用宝石
Using gems in Ruby *basic*
我完全是新手
我有一个gem我想安装使用,假设是这个:
https://rubygems.org/gems/linkedindata/versions/0.0.22
我正在使用命令:
gem install linkedindata
#1 gem installed
之后,我将其添加到我的 gem 文件中:
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' 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>'
我是不是做错了什么?还是这个gem有问题?
更新
问题出在 gem 内,请参阅下面 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
时,您正在使用捆绑器。在您的脚本中,您需要包含 rubygems
和 bundler
才能使其正常工作。试试这个
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 .
in 看起来 gem 本身在声明依赖项以及它所依赖的其他 gems 的方式上有些问题。我似乎能够按如下方式使其工作:
宝石文件:
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)
现在 运行s(我没有 proxylist.txt 所以它在寻找它时爆炸了,但它不再出现库错误)。
我完全是新手
我有一个gem我想安装使用,假设是这个:
https://rubygems.org/gems/linkedindata/versions/0.0.22
我正在使用命令:
gem install linkedindata
#1 gem installed
之后,我将其添加到我的 gem 文件中:
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' 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>'
我是不是做错了什么?还是这个gem有问题?
更新
问题出在 gem 内,请参阅下面 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
时,您正在使用捆绑器。在您的脚本中,您需要包含 rubygems
和 bundler
才能使其正常工作。试试这个
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 .
in 看起来 gem 本身在声明依赖项以及它所依赖的其他 gems 的方式上有些问题。我似乎能够按如下方式使其工作:
宝石文件:
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)
现在 运行s(我没有 proxylist.txt 所以它在寻找它时爆炸了,但它不再出现库错误)。