簡體   English   中英

捆綁rvm的軟件包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM