我想用ruby製作一個CLI工具。 我的工具需要捆綁一些庫(log4r,...)。所以當我切換我的ruby版本(2.0.0 - > 2.1.2)或者當切換gemset時,一些gem沒有安裝到新的ruby環境中時出現問題。 那麼我怎樣才能使我的應用程序像vagrant
一樣工作,它可以在我使用的每個Ruby版本中工作?在rvm中切換ruby版本時Ruby命令行工具崩潰
回答
如果您將應用程序打包爲Gem,那麼您可以包含描述應用程序的Gemspec。您可以指定的其中一項是its runtime dependencies;當用戶運行gem install myapp
時,那麼gem
命令將確保它包含您指定的所有內容(如log4r)。
沒有Rubygems就難以實現這一點。您可以將應用程序與定義的Ruby版本及其所有要求(that's what Vagrant does)一起打包,但這會使您的應用程序有更大的下載量,並且意味着您需要更多的維護。如果你想要在整個系統上安裝你的應用程序,並且它可以在每個Ruby環境中工作,那將是一件非常辛苦的工作。讓gem
應用程序安裝您的應用程序(無論是系統範圍還是通過rbenv/rvm)並讓它爲您管理您的依賴關係要好得多。有default gems plugin for rbenv和rvm gemsets來幫助管理這個。
問題是因爲我從rbenv/rvm安裝ruby,我的應用程序僅在此版本的ruby和gemset(比如2.1.2,默認gemset)上可用。所有依賴項gem像log4r,thor ...安裝在/Users/guest/.rvm/gems/ruby-2.1.2。所以,如果我切換紅寶石版本,我的應用程序崩潰,因爲在新的紅寶石環境中,log4r和thor沒有安裝 – 2014-08-31 15:19:42
是的 - 但如果你使用rbenv/rvm,那麼你的應用程序不應該*可用*如果你切換到沒有你的應用程序的環境。你可以在rbenv/rvm中使用默認的gemset,它可以幫助你在Ruby版本之間切換,而不必記得每次都安裝你的應用程序 - 我在原來的答案中添加了一些東西來反映這一點。 – 2014-08-31 15:28:40
- 1. 在Ruby的編譯版本和rvm版本之間切換
- 2. ruby版本和rvm
- 3. 通過rvm切換單個命令的ruby
- 4. Ruby腳本崩潰
- 5. RVM不承認.ruby版本
- 6. 爲什麼我無法使用RVM切換我的Ruby版本?
- 7. 我可以使用RVM動態切換Ruby版本嗎?
- 8. 使用Ruby調用命令行工具
- 9. 無法在RVM中設置Ruby版本?
- 10. RVM - 爲給定的命令自動使用某個Ruby版本?
- 11. rvm deafult ruby版本工作其他版本不工作
- 12. rvm ruby版本和rails服務器不同的ruby版本
- 13. 崩潰運行命令時
- 14. 如何從Ruby中檢查RVM版本?
- 15. RVM無法切換到Ruby 1.9.1
- 16. RVM .ruby-gemset文件不能切換gemsets
- 17. 在ruby腳本中執行cd命令
- 18. Ruby Mysql崩潰
- 19. 改變rvm ruby版本與ansible劇本
- 20. 命令替換RUBY
- 21. 批崩潰時運行Findstr工具命令
- 22. rbenv沒有正確切換Ruby版本
- 23. 乘客使用Ruby系統版本而不是RVM中的Ruby
- 24. 在rvm ruby安裝2.2.4後使用錯誤的ruby版本
- 25. 在Ruby腳本中運行命令行命令
- 26. 如何使用RVM在特定版本中運行Ruby文件?
- 27. Rake 10.0.3在RVM中運行錯誤的Ruby版本
- 28. rvm不默認較新版本的ruby
- 29. 做這些RVM Ruby版本意味着
- 30. 卸載rvm可以殺死ruby版本?
Vagrant是一個預先包裝的應用程序。它打包它的Ruby版本,它是寶石依賴和一切。 http://mitchellh.com/abandoning-rubygems – Joeyjoejoejr 2014-08-31 11:57:20