3

gem list在 powershell 和 cygwin 中使用了该命令,并且都显示了不同的 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 都是 int)。会不会是因为这个?

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

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

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

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/
4

1 回答 1

2

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

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

为了确保 Windows 上 gem 的一致性,我建议安装一个 ruby​​ 并使用 Bundler 通过 Gemfile 维护你的 gem。删除你通过cygwin安装的ruby,并确保你使用的ruby在两个环境中都是一样的(试试ruby -v

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

更新后编辑

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

于 2012-12-28T14:45:02.763 回答