Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析rubygems的多个版本_Ruby_Rubygems_Version - Fatal编程技术网

解析rubygems的多个版本

解析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

我的机器上安装了多个版本的rubygems,当我看到所有的gem时,但当我运行脚本时,会收到如下错误消息

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'