[英]bundle package with rvm
我在看《 Rails Way》這本書。 並且討論了運行“捆綁包”。 這會將您的應用程序使用的所有.gem文件存儲在供應商/緩存中。 運行軟件包安裝將首選供應商/緩存中的寶石,而不是其他位置的寶石。 我正在使用rvm,因此我使用rvm對此進行了測試:
rvm gemset create rent_prototype
rvm use 2.2.1@rent_prototype
gem install rails
rvm gemdir
/home/viggy/.rvm/gems/ruby-2.2.1@rentme_prototype
$ cd /home/viggy/.rvm/gems/ruby-2.2.1@rentme_prototype
$ ls -l devise-4.1.1
ls: cannot access devise-4.1.1: No such file or directory
上面我用rvm創建了一個gemset,並檢查是否安裝了devise gem,但這不是因為它不在Gemfile中。 現在,我使用捆綁包:
$ cd -
$ bundle package
Updating files in vendor/cache
* rake-11.1.2.gem
* i18n-0.7.0.gem
* json-1.8.3.gem
...
$ cd vendor/cache
$ ls -l devise-4.1.1
ls: cannot access devise-4.1.1: No such file or directory
當然,供應商/緩存中也沒有任何設計寶石。
然后,我修改Gemfile並添加:
gem 'devise'
然后我運行bundle install
。
現在,我檢查裝置的安裝位置:
$ bundle show devise
/home/viggy/.rvm/gems/ruby-2.2.1@rentme_prototype/gems/devise-4.1.1
$ cd vendor/cache
$ ls -l devise-4.1.1
ls: cannot access devise-4.1.1: No such file or directory
因此,當我安裝gem時,它將安裝在rvm文件夾中。 與其他位置相比,它不喜歡供應商/緩存。 如果是這樣,那么在使用rvm時“捆綁包”的目的是什么?
根據我的評論。 在將devise添加到gem文件后,您沒有運行包,這就是為什么它不在供應商/緩存中。 捆綁安裝仍然需要在系統上安裝gem。
package命令會將捆綁包中的寶石的.gem文件復制到./vendor/cache中。 之后,當您運行捆綁安裝時,Bundler將優先使用rubygems.org上的gem。
此外,如果您隨后將該目錄檢入到源代碼控制存儲庫中,那么簽出您的源代碼的其他人將能夠安裝捆綁軟件,而不必下載任何其他gem。
rvm gemset和bundler解決了與使用/激活寶石/版本集相同的一些問題。 現在有了bundler,您不需要使用rvm gemsets,gemfile可以處理它。 但這並非總是如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.