【问题标题】:Bundler issue when running a ruby script运行 ruby​​ 脚本时的 Bundler 问题
【发布时间】:2018-02-23 03:38:09
【问题描述】:

我正在尝试从 ruby​​ 脚本中运行一些较旧的 ruby​​ 脚本(使用旧 ruby​​ 版本)。这是一个程序:

old_ruby187.rb

#!/usr/ruby/1.8.7/bin/ruby
puts "Hello"

new_ruby230.rb

#!/usr/ruby/2.3.0/bin/ruby
require "rubygems"
require "bundler"
Bundler.setup       # Code works if I comment this line
puts `old_ruby187.rb`

我收到捆绑程序加载错误。如果我执行./new_ruby230.rb,它会为最后一个puts 命令行提供错误。:

'require': no such file to load -- rubygems (LoadError)

如果我只评论Bundler.setup 并运行它,它工作正常。不确定Bundler.setup 是否尝试为system 调用加载某些内容。我需要 new_ruby230.rb 脚本中使用的其他 gem 的 bundler。

感谢任何帮助。

更新(2018 年 2 月 22 日):
在调用旧的 ruby​​ 脚本时,我最终使用了 ssh。比如:

new_ruby230.rb

#!/usr/ruby/2.3.0/bin/ruby
require "rubygems"
require "bundler"
require "socket"
Bundler.setup
puts `ssh #{Socket.gethostname} old_ruby187.rb` # this worked!

【问题讨论】:

  • 是来自Bundler.setup方法调用的错误栈吗?

标签: ruby bundler


【解决方案1】:

很确定您不应该需要这样的红宝石。 Bundler 可以管理您的宝石。删除那个 require 语句(需要“rubygems”),你应该很高兴。

【讨论】:

  • 正如我提到的 ruby​​gems 无关,代码在脚本中运行其他版本的 ruby​​ 时出现问题 - 最后puts 行。我删除了require "rubygems" 仍然是同样的错误。我需要 ruby​​gems 引用 this.
  • 您是否在终端中运行了“捆绑安装”?
  • 是的,我可以使用宝石。我只是无法使用 Bundler.setup 运行其他版本的独立 ruby​​ 脚本!
  • 您使用的是 rbenv 还是 rvm?我觉得我没有正确理解你。 'bundle install' 的输出是什么?
  • 不,我没有使用 rbenv 或 rvm。为简化起见,我可以使用 ticks 或 system 运行任何外部(shell、pearl 等)脚本或 unix 命令,但 ruby​​ 脚本(使用旧版 ruby​​ 版本)除外。如果我不使用Bundler.setup,ruby 脚本也可以使用system 命令正常执行。这现在有意义吗?
猜你喜欢
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
相关资源
最近更新 更多