解析rubygems的多个版本
我的机器上安装了多个版本的rubygems,当我看到所有的gem时,但当我运行脚本时,会收到如下错误消息解析rubygems的多个版本,ruby,rubygems,version,Ruby,Rubygems,Version,我的机器上安装了多个版本的rubygems,当我看到所有的gem时,但当我运行脚本时,会收到如下错误消息 Missing these required gems: SystemTimer 除了一个版本外,我是否可以遵循任何方法删除所有版本的rubygems?理想情况下,我希望能够访问我的程序中gem list下显示的所有gem 从宝石环境 -RUBY可执行文件:/System/Library/Frameworks/RUBY.framework/Versions/1.8/usr/bin/R
Missing these required gems:
SystemTimer
除了一个版本外,我是否可以遵循任何方法删除所有版本的rubygems?理想情况下,我希望能够访问我的程序中gem list下显示的所有gem
从宝石环境
-RUBY可执行文件:/System/Library/Frameworks/RUBY.framework/Versions/1.8/usr/bin/RUBY
如果我跑步:
$ /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby script/mailer_daemon_fetcher start production
no such file to load -- SystemTimer
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:156:in `require'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:521:in `new_constants_in'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:156:in `require'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/rails/gem_dependency.rb:208:in `load'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:307:in `load_gems'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:307:in `each'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:307:in `load_gems'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:164:in `process'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in `send'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in `run'
./script/../config/environment.rb:13
script/mailer_daemon_fetcher:5:in `require'
script/mailer_daemon_fetcher:5
no such file to load -- SystemTimer
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:156:in `require'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:521:in `new_constants_in'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:156:in `require'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/rails/gem_dependency.rb:208:in `load'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:307:in `load_gems'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:307:in `each'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:307:in `load_gems'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:169:in `process'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in `send'
/Library/Ruby/Gems/1.8/gems/rails-2.3.4/lib/initializer.rb:113:in `run'
./script/../config/environment.rb:13
script/mailer_daemon_fetcher:5:in `require'
script/mailer_daemon_fetcher:5
Missing these required gems:
SystemTimer
You're running:
ruby 1.8.7.72 at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
rubygems 1.3.5 at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8, /Library/Ruby/Gems/1.8
注意,在上面我手动调用ruby**/System/Library/Frameworks/ruby.framework/Versions/1.8/usr/bin/ruby**这是我的/usr/bin/ruby符号链接到的同一个文件,而且我的GEM_路径设置为/System/Library/Frameworks/ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
gem环境的完整输出可在以下位置获得:
它将删除所有旧的gem版本
您在环境方面遇到了问题—运行gem
会比在脚本中使用rubygems时获取其他内容
查看的输出(尤其是GEM路径)
您还可以比较在shell中执行的
ruby-e'p ENV'
和在代码中执行的p ENV
的结果-查找与gem相关的内容的差异我感觉您使用的ruby版本可能与ruby gems不同。要么是那个,要么是ruby不知道去哪里找你的宝石
请参阅以确保您的环境配置为使用gems
如果按照说明操作后仍然存在问题,请确保没有安装多个版本的ruby。如果有多个版本的Ruby可用,请确保脚本调用的Ruby版本与gem相同。这是通过比较RUBY_可执行文件的gem环境
清单和脚本的shebang行来实现的。仔细检查以遵循任何符号链接,因为大多数基于发行版的ruby安装都将符号链接到/usr/bin/ruby
到/usr/bin/ruby1.8
您还应该检查gems是否由运行脚本的同一用户安装
如果您在没有root权限的情况下运行gem安装,那么新的gem将安装在您的主目录中。如果您作为另一个用户运行的脚本依赖于这些gem。那些已安装的gems将找不到。但是,如果您的gems是由root用户安装的,并且其他用户正在运行需要这些gems的脚本,则不会出现问题
我在从Ruby切换到Ruby Enterprise Edition时遇到了这个问题。我发现我必须使用REE的gem实例再次安装所有必需的gem。我认为问题在于SystemTimer的加载有点奇怪,因此需要在environment.rb中进行更多配置 “问题”似乎是gem被称为“SystemTimer”,但您需要加载“system\u timer”。为了使用environment.rb实现这一点,您应该使用:
config.gem 'SystemTimer', :lib => 'system_timer'
这似乎解决了我同样的问题。使用RVM,您可以拥有不同版本的Ruby(企业版、MRI、Rubinius等)和不同的gem集
看看吧,它真的很有用 gem cleanup被一些安装阻塞,并说它们是依赖项,我可以手动删除这些文件夹吗?运行GEM清理后,我在顶部发布了我的GEM路径。我仍然无法在脚本中使用系统计时器您可以删除包含已提取gem的文件夹,但请注意,还有gem的缓存版本、其规范、包含文档的文件夹,另外,一些gems安装binarieshow是否会确保他们的脚本调用与我的gems相同的ruby版本?更新了答案,提供了新的可能解决方案。更新了更多信息,看起来所有版本都在升级您是否检查了用户情况。如果您以snomanintsun的身份运行gem安装,那么在root下运行的cron作业将找不到gem。当从脚本调用时,Gem.path变量中存储了什么?
gem environment
config.gem 'SystemTimer', :lib => 'system_timer'