我试图通过guard-shell
运行Ruby脚本。此脚本需要redcarpet
gem。当脚本运行时,我得到一个"无法加载这样的文件"错误,表示我预期使用的宝石集实际上没有被使用。
以下是一些相关参数:
在Guard应用程序文件夹中(Guardfile
所在的位置):
> ls -a
. .ruby-gemset Gemfile Guardfile
.. .ruby-version Gemfile.lock tmp1.txt
> cat .ruby-*
rails4
2.1.2
宝石似乎在那里:
> gem which redcarpet
/Users/sameer/.rvm/gems/ruby-2.1.2@rails4/extensions/x86_64-darwin-13/2.1.0-static/redcarpet-3.1.2/redcarpet.bundle
我的Guardfile有watch(/(.*)/) {|m| `rvm list; rvm gemset list; gem which redcarpet` }
,输出:
ERROR: Can't find ruby library file or shared library redcarpet
ERROR: Can't find ruby library file or shared library redcarpet
rvm rubies
ruby-2.0.0-p353 [ x86_64 ]
ruby-2.1.0-preview1 [ x86_64 ]
ruby-2.1.1 [ x86_64 ]
=* ruby-2.1.2 [ x86_64 ]
# => - current
# =* - current && default
# * - default
gemsets for ruby-2.1.2 (found in /Users/sameer/.rvm/gems/ruby-2.1.2)
(default)
global
=> rails4
那么我错过了什么?
答案 0 :(得分:1)
我得到了同样的错误,例如:
./ my_prog.rb:1:in
require': cannot load such file -- nokogiri (LoadError) from ./my_prog.rb:1:in
'
但是如果我把gemy程序所需的gem放在Gemfile中,那么ruby程序会毫无错误地执行。如果我在Gemfile中注释掉该行,则会再次发生错误。 gem以任何一种方式安装,但是如果它没有在Gemfile中列出,那么guard-shell会产生该错误。
我的Guardfile
:
guard :shell do
watch /.*/ do |m|
puts 'hello'
`ruby ./my_prog.rb`
end
end
我的Gemfile
:
source 'https://rubygems.org'
group :development do
gem 'guard', '2.6.1'
gem 'guard-shell', '0.6.1'
gem 'nokogiri', '1.6.2.1'
end
my_prog.rb
:
require 'nokogiri'
puts 'goodbye'
有点烦人,这是我在后卫外壳中的输出:
hellouard(main)>
goodbye
[1] guard(main)>