[英]Running Ruby gems with Cygwin
我在Windows上使用Cygwin和cygwin'd版本的ruby。
$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-cygwin]
在成功安裝rspec(gem install rspec)之后,我嘗試運行基本的init命令(rspec --init)來開始,但是我得到了一個bash命令not found消息。
$ rspec --init
-bash: rspec: command not found
我猜這種情況正在發生,因為我的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
...
我在搜索中找到的最接近的東西是另一個StackOverflow問題:
但根據我對解決方案的理解,它將尋找擴展名為.bat的文件。 在我的cygwin中運行它的部分來測試它不會產生有用的結果。
有關使cygwin與我在寶石環境中看到的一致的任何提示?
雖然我的回答有點晚,但我認為它可能有助於有同樣問題的人。
對我來說問題是,所有ruby可執行文件都存儲在~/bin
。中,這在我的cygwin路徑中沒有設置。 所以我在~/.gemrc
更改了所有ruby gems及其可執行文件的位置:
gemhome: /usr/local/rubygems
gem: --bindir /usr/bin
重新安裝寶石后,一切都很順利。 這會將所有gem可執行文件直接安裝到/usr/bin
。 對於多用戶設置,這肯定有點臟。
如果您需要適當的多用戶設置,更好的方法是將PATH
調整為指向~./bin
isntead。
進一步閱讀:
您可以將以下內容添加到.bashrc
或類似內容中:
export PATH=$PATH:~/bin
並執行source ~/.bashrc
將其立即添加到路徑中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.