bundler简介(ruby gem)
簡介 Bundler
RubyGem 是包裝、散佈Ruby程式庫的標準方式,相關文件可以參考 RubyGems Guides 的說明,或是 簡介 plugins 中的第二個例子。在使用rails new建立新專案時,會執行bundle install安裝應用程式使用到的Gem,例如在 安裝 Rails 中看到的例子:
create
create README
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
...略
create vendor/plugins/.gitkeep
run bundle install
Fetching source index for http://rubygems.org/
Using rake (0.9.2.2)
Using multi_json (1.0.4)
Using activesupport (3.1.3)
...略
Installing turn (0.8.2)
Installing uglifier (1.1.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Bundler
是管理Gem相依性的工具,執行bundle
install時,會根據應用程式目錄中Gemfile的設定,檢查指定的Gem與相依套件是否已安裝,如果已安裝了Gem,就會顯示Using,如果是
新下載安裝的Gem,就會顯示Installing,想知道已安裝的Gem裝到哪,可以使用bundle show gemname來得知。
預設Gem會安裝至Ruby安裝目錄中gems目錄中,例如在我的Ubuntu中是安裝至/usr/local/lib/ruby/gems/1.9.1/gem中,如果有設置BUNDLE_PATH環境變數,則會將Gem安裝至指定的目錄中。
bundle
install會連至伺服器檢查Gem相依性,預設是連線http://rubygems.org,如果有缺少的Gem,會自動下載安裝,然而每次執行
bundle install都要連線會耗費時間,如果你需要的Gem先前都下載安裝過了,在執行rails new建立新專案時,可以先略過連線:
之後執行bundle install時指定--local選項:
加上--local選項就不會連至 Server,只會檢查本地端有無安裝,但如果有缺少的Gem,不會自動下載安裝。
要注意的是,在Rails 3中使用Gemfile來管理Gem,應用程式會使用的Gem,一定要在Gemfile中設定,不然即使本地端有安裝,應用程式也無法使用,一個新建的專案中,預設的Gemfile如下:
- Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.1.5'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', '0.8.2', :require => false
end
第一行source指定了連線的伺服器,gem後的第一個參數指定Gem的名稱,第二個參數指定版本,如果不指定版本,會安裝最新的穩定版本,Gem名稱與版本,可至http://rubygems.org搜尋確認,版本還可以指定大於等於某個版本,例如'>=3.1.3',或是指定'~>x.y.z',x是主(major)版本號,通常在API發生重大變動時才會更改、y是次(minor)版本號,通常是在新增功能時修改,z是小(tiny)版本號,通常在修正bug後修改,這種指定表示版本號x.y不變,但可以大於等於z。
預設Gem名稱就會是require的名稱,如果不同,可以使用:require指定要require的名稱。如果你的Gem不在預設gems目錄中,也可以使用:path指定,也可以使用:git指定Git作為來源。group則可以指定特定環境載入執求的Gem,例如上例中:test指定測試環境使用turn這個Gem。
執行bundle install連線伺服器,會檢查Gem更新與相依性,必要時下載安裝,最後應用程式使用了哪些Gem與版本,會記錄在Gemfile.lock之中,如果Gemfile有變動,執行bundle install會查看Gemfile.lock,瞭解已安裝了哪些Gem,僅安裝更新的Gem,並將新使用到的Gem資訊記錄至Gemfile.lock。可以執行bundle update gemname指定更新Gem,如果僅執行bundle update,就會重新確認Gem更新與相依性,重新產生Gemfile.lock。
摘自:https://openhome.cc/Gossip/Rails/Bundler.html
bundler简介(ruby gem)的更多相关文章
- Ruby Gem命令详解
转自:http://www.jianshu.com/p/728184da1699 Gem介绍: Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.o ...
- Ruby Gem命令
Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找.安装.升级和卸载软件包,非常的便捷. Ruby 1.9.2版本默认已安装Ru ...
- ruby gem tips(转)
淘宝源: https://ruby.taobao.org 升级ruby gem gem update --system 查看gem版本 gem -v 查看gem版本,gems安装目录,remote s ...
- ruby(&gem) koala安装
1.ruby下载安装 下载地址:http://railsinstaller.org/en 选择合适版本 2.gem(安装ruby时自带gem) 删除原镜像:gem sources --remove h ...
- 转 关于ruby gem无法连接到rubygems.org的解决方案
为什么有这个? 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.所以你会与遇到 gem install rack 或 bundle ...
- 修改ruby gem源为ruby.taobao.org
由于网络原因,导致从rubygems.org下载gem文件较慢或者间歇性的连接失败,所以可以修改gem源为ruby.taobao.org.具体可以用 gem install rails -V 来查看执 ...
- ruby, gem install 出现网络错误
gem sources #查看目前的源 gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.or ...
- 关于ruby -gem无法切换淘宝源
ruby官网提供的 淘宝的gem源 不起作用 https://ruby.taobao.org/ taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 http://gems. ...
- 关于ruby gem无法连接到rubygems.org的解决方案
RubyGems 镜像 - 淘宝网 为什么有这个? 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.所以你会与遇到 gem ins ...
随机推荐
- 第二章 向量(e)起泡排序
- PHP抽象方法、抽象类以及接口
1.什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时 ...
- 二次注入的学习--Buy Flag(http://10.112.68.215:10002)
这次有做一个二次注入的天枢CTF题目,算是完整地理解了一遍注入的知识.来,启航. 1.判断注入点 经过对题目的实践分析,知道注册时需要输入年龄大于18岁,但在登录后界面,年龄因为太大不能接 ...
- 微信小程序开发——点击按钮获取用户授权没反应或反应很慢的解决方法
异常描述: 点击按钮获取用户手机号码,有的时候会出现点击无反应或很久之后才弹出用户授权获取手机号码的弹窗,这种情况下,也会出现点击穿透的问题(详见:微信小程序开发——连续快速点击按钮调用小程序api返 ...
- POJ 1177 Picture(线段树周长并)
描述 A number of rectangular posters, photographs and other pictures of the same shape are pasted on ...
- f5时间设置
方法一:NTP(推荐) 注:修改ntp server后大约需要10分钟左右才能同步成功. 查看ntp状态: 方法二:手动修改
- java项目中常见的异常及处理
Java开发中常见异常及处理方法 1.JAVA异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API ...
- 微信小程序中用setData修改一个对象的属性值
原创文章 1. Page({ data: { items:{ //items为一个对象,is_like和like分别为其两个属性 is_like: 0, like: 0 ...
- (转)Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的类或则方法
文章转自:http://blog.sina.com.cn/s/blog_52f623240102vpcr.html 在Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的 ...
- matlab函数拟合
1 函数拟合 函数拟合在工程(如采样校正)和数据分析(如隶属函数确定)中都是非常有用的工具.我这里将函数拟合分为三类:分别是多项式拟合,已知函数类型的拟合和未知函数类型的拟合.matlab中关于函数的 ...