ruby-on-rails - 在 cygwin 和 powershell 中查看不同的 gem 列表

标签 ruby-on-rails ruby powershell gem cygwin

我在 powershell 和 cygwin 中使用了 gem list 命令,两者都显示了不同的 gem 列表。 Cygwin 显示

*** LOCAL GEMS ***

bundler (1.2.3)
json (1.7.5)
minitest (2.12.1)
rake (0.9.2.2)
rdoc (3.12)

在 powershell 中我看到:

*** LOCAL GEMS ***

io-console (0.3)
json (1.5.4)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.4)
sass (3.2.1)

所以,同一个gem的版本也是有区别的。

为什么会这样?此外,我在使用 rails 时遇到了 bundle install 的问题(包括 Cygwin 和 Powershell)。难道是因为这个?

如何确保 gem 的一致性?通过 Powershell/cygwin 安装 gem 不会使其对整个系统可用吗?

所以,我想安装一个全新的 gems 和 Rails 副本,它在 Powershell 和 cygwin 中是一致的。我该怎么做?

在 cygwin 中运行 gem 环境 给出了这个:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.3 (2012-11-10 patchlevel 327) [i386-cygwin]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /usr/bin/ruby.exe
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-cygwin
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.9.1
     - /cygdrive/c/SPB_Data/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

在 windows powershell 中它给出:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.3 (2012-04-20 patchlevel 194) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby193/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: C:/Ruby193/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby193/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby193/lib/ruby/gems/1.9.1
     - C:/SPB_Data/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

最佳答案

我只能根据您提供的信息进行猜测,但听起来您在 cygwin 和 windows 中安装了单独版本的 ruby​​。

判断发生了什么的一种简单方法是在两个 shell 中执行 ruby -vgem 环境,这将告诉您正在使用哪个 ruby​​ 版本,以及 ruby​​ 认为它使用的是什么版本,以及 Rubygems 在哪里寻找 gems。

为了确保 gems 在 windows 上的一致性,我建议安装一个 ruby​​ 并使用 Bundler 通过 Gemfile 维护您的 gems。删除您通过 cygwin 安装的 ruby​​,并确保您在两个环境中使用的 ruby​​ 是相同的(尝试 ruby -v)

但是,根据您提供的信息,我不确定为什么您会收到捆绑程序错误。

更新后编辑

所以您肯定安装了两个不同版本的 ruby​​,每个版本都有自己独特的 gem 集。你不能在cygwin中使用windows版本,所以我会做的是卸载cygwin版本(使用cygwin setup.exe来做到这一点!如果你没有它,从cygwin网站重新下载。你可以指出要删除和添加的包)并确保 /cygdrive/c/ruby193/bin 在您的 cygwin 路径中,以便 which ruby​​which gem 指向这个目录。

关于ruby-on-rails - 在 cygwin 和 powershell 中查看不同的 gem 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070627/

相关文章:

ruby-on-rails - RoR 的 Split gem 是否始终为给定用户提供 AB 测试的同一侧?

ruby-on-rails - 如何在 RoR 中实现成就系统

ruby-on-rails - "Mysql2"0.5.2版本安装失败

json - 在 Windows Power Shell 中读取 json 响应

powershell - 使用 Powershell 在具有服务计划的资源组中创建 Azure 网站(应用服务)

ruby-on-rails - ActionMailer 测试在 Rails 3.2.8 中失败

ruby-on-rails - 我如何确定涡轮链接正在工作?

ruby - 从命令行通过 capistrano 在远程主机上运行命令

ruby - MongoMapper 自定义类型不起作用

powershell - 从IF ELSE语句输出到管道