用Cygwin运行Ruby宝石

lop*_*ert 10 ruby bash cygwin

我在Windows上使用Cygwin和cygwin'd版本的ruby.

$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-cygwin]
Run Code Online (Sandbox Code Playgroud)

在成功安装rspec(gem install rspec)之后,我尝试运行基本的init命令(rspec --init)来开始,但是我得到了一个bash命令not found消息.

$ rspec --init
-bash: rspec: command not found
Run Code Online (Sandbox Code Playgroud)

我猜这种情况正在发生,因为我的C:\ cygwin64\bin目录下没有"rspec"文件(因为有"ruby","irb"等文件,cygwin在输入命令时必须查看这些文件).

浏览我的cygwin目录,我可以在"C:\ cygwin64\home\username\.gem\ruby​​\gems\rspec-core-3.3.2\exe"下看到rspec"exe"文件.我认为这意味着只需将此文件添加到cygwin的路径中,但我无法找到一个很好的例子.理想情况下,该解决方案将处理此gem(rspec)和所有未来的安装,而无需每次都对该路径进行"硬编码".

看看我的"宝石环境",似乎安装的宝石已经在我的"GEM PATHS"之下了.似乎这与Cygwin正在寻找的地方之间存在脱节.

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.7
  - RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-cygwin]
  - INSTALLATION DIRECTORY: /home/username/.gem/ruby
  - RUBY EXECUTABLE: /usr/bin/ruby.exe
  - EXECUTABLE DIRECTORY: /home/username/bin
  - SPEC CACHE DIRECTORY: /home/username/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-cygwin
  - GEM PATHS:
     - /home/username/.gem/ruby
     - /usr/share/gems
     - /usr/local/share/gems
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/bin
     - /usr/bin
     ...
Run Code Online (Sandbox Code Playgroud)

我在搜索中找到的最接近的东西是另一个StackOverflow问题:

什么版本的ruby与cygwin一起使用?

但根据我对解决方案的理解,它将寻找扩展名为.bat的文件.在我的cygwin中运行它的部分来测试它不会产生有用的结果.

有关使cygwin与我在宝石环境中看到的一致的任何提示?

Fge*_*Fge 12

虽然我的回答有点晚,但我认为它可能有助于有同样问题的人.

对我来说问题是,所有ruby可执行文件都存储在~/bin.,这在我的cygwin路径中没有设置.所以我改变了所有ruby gems及其可执行文件的位置~/.gemrc:

gemhome: /usr/local/rubygems
gem: --bindir /usr/bin
Run Code Online (Sandbox Code Playgroud)

重新安装宝石后,一切都很顺利.这将直接安装所有gem可执行文件/usr/bin.对于多用户设置,这肯定有点脏.

如果您需要适当的多用户设置,更好的方法是调整PATH指向~./binisntead.

进一步阅读:


drk*_*gel 7

您可以将以下内容添加到您的.bashrc或类似的:

export PATH=$PATH:~/bin
Run Code Online (Sandbox Code Playgroud)

source ~/.bashrc立即将其添加到路径中.