- 浏览: 58429 次
- 性别:
- 来自: 深圳
最新评论
bundler是一套为了 Rails3 所打造的全新 Gem dependencies 管理工具:一套基于 Rubygems 的更高阶套件管理工具,适合让 Application 管理多套 Gems 依存关係的複杂情境。而你在 Rails3 中 (Bundler 不只用在 Rails3,其他例如 Sinatra 或是 Rails2 也都可以使用) 要使用的 Gems,也都必须宣告在它的 Gemfile 裡,没写在裡面的话,就算手动 require 也找不到。这跟已往你可以直接 require 任意 rubygems 不同,在使用 Bundler 的环境中,要 require 什麽 rubygems 必须透过 Gemfile 管理。
Gemfile 的寫法大致如下:
# 第二个参数可以指定版本
gem "rails", "3.0.0.beta3"
# 如果 require 的档名不同,可以加上 :require
gem "sqlite3-ruby", :require=> "sqlite3"
# 可以用 Git 当做来源,甚至可以指定 branch, tag 或 ref。
gem 'authlogic', :git=> 'git://github.com/odorcicd/authlogic.git',
:branch=> 'rails3'
# 可以直接用电脑裡的其他目录
gem "rails", :path=> '/Users/ihower/github/rails'
# Group 功能可以让特定环境才会载入
group :testdo
gem "rspec-rails", ">= 2.0.0.beta.8"
gem "webrat"
end
设定好 Gemfile 之后,我们有一些指令可以用:
bundle check 可以检查目前缺少哪些 rubygem,然后你可以手动透过 sudo gem install 安装到系统裡。 bundle install 安装所有需要的套件。如果系统已经有装了,就用系统的,不然会装到 $BUNDLE_PATH 下,预设是你家目录 ~/.bundle (因此请不要用 sudo 执行 bundle install)。如果来源是 git (例如上述的 authlogic),每次执行 bundle install 就会自动 git pull 更新,十分方便。 bundle lock 和 bundle unlock 会做 snapshotting 记录下目前所有套件的版本在 Gemfile.lock,建议这个档桉也一起 commit 出去。适合要佈署或多人开发时,可以确保大家的版本都一致。 bundle package 如果你的 Server 没联外网路,或是怕 rubygems.org 连不上,可以用这个指令把所有套件都打包到 vendor/cache 下。基本上,跟以往 Rails 1.X 2.X 时代佈署时会建议你尽量打包依存套件并 commit 出去,在使用 Bundler 后已经大大地不需要了,因为透过 bundle lock 我们就可以确保每台机器上执行的套件版本一致。 bundle exec 因为 Bundle 可以说是独立出一个套件环境,所以如果有非 Rails 的指令需要执行,而且你的系统 Gems 又没有安装,那就会需要透过 bundle exec XXX 来执行。例如 bundle exec cucumber。 bundle show gem_name 可以查看这个 gem 的目录位置 bundle open gem_name 可以用编辑器打开这个 gem 的目录
开发 Rails3 实际用一阵子之后,发现很偏好将套件装成 Gem 了(如果有提供 Gem 版的话),之前 Rails 1.X 2.X 时代会比较喜欢装成 Plugin,因为想说别人要装 Gem 可能会有问题,以及佈署也怕出包。但是有了 Bundler 之后,只要 Bundle install 就可以装好并确保大家的版本一致会动。不像已往的 rake gems:install 超不可靠。可以透过 Bundle 装这些依存套件也减少了需要 commit 出去的 vendor/plugin 档桉,让你的专桉 repository 变乾淨了。另外,我也超喜欢的 Bundler 可以支援 Git 来源,只要 bundle install 就会更新,不需要额外的管理工具去烦恼更新 plugins。
其他推荐阅读:
Library Management Gets an Update in Rails 3: 一般性介紹ASCIIcasts 201: Bundler: 一般性介紹Using the New Gem Bundler Today: 有 Bundler 的設計目標,推薦看第一段即可。Using Bundler in Real Life: Bundle 的使用情境介紹,非常推薦一看Some of the Problems Bundler Solves: 深入舉例 Bundler 要解決的問題,為什麼單靠 Rubygems 和之前的 config.gem 做不到。有時間的話,也推薦一看。例如,其中最主要解決的問題是,目前的 Rubygems 同一時間只能 require 一個版本,所以如果你有兩個套件有不同版本的需求,例如一個套件指定需要 rspec 1.1.12,另一個指定需要 1.2.0。那就爆炸了,會出現 can’t activate rspec(= 1.1.12 runtime), already activated rspec-1.2.0 的錯誤。Named Gem Environments and Bundler: 深入解釋了 Bundler 如何處理 dependency 問題The How and Why of Bundler Groups: 深入解釋 Group 功能Yuhada 在 RubyConf 2009 的演講:Polishing Rubygems
转至:http://ihower.tw/blog/archives/4464
Gemfile 的寫法大致如下:
# 第二个参数可以指定版本
gem "rails", "3.0.0.beta3"
# 如果 require 的档名不同,可以加上 :require
gem "sqlite3-ruby", :require=> "sqlite3"
# 可以用 Git 当做来源,甚至可以指定 branch, tag 或 ref。
gem 'authlogic', :git=> 'git://github.com/odorcicd/authlogic.git',
:branch=> 'rails3'
# 可以直接用电脑裡的其他目录
gem "rails", :path=> '/Users/ihower/github/rails'
# Group 功能可以让特定环境才会载入
group :testdo
gem "rspec-rails", ">= 2.0.0.beta.8"
gem "webrat"
end
设定好 Gemfile 之后,我们有一些指令可以用:
bundle check 可以检查目前缺少哪些 rubygem,然后你可以手动透过 sudo gem install 安装到系统裡。 bundle install 安装所有需要的套件。如果系统已经有装了,就用系统的,不然会装到 $BUNDLE_PATH 下,预设是你家目录 ~/.bundle (因此请不要用 sudo 执行 bundle install)。如果来源是 git (例如上述的 authlogic),每次执行 bundle install 就会自动 git pull 更新,十分方便。 bundle lock 和 bundle unlock 会做 snapshotting 记录下目前所有套件的版本在 Gemfile.lock,建议这个档桉也一起 commit 出去。适合要佈署或多人开发时,可以确保大家的版本都一致。 bundle package 如果你的 Server 没联外网路,或是怕 rubygems.org 连不上,可以用这个指令把所有套件都打包到 vendor/cache 下。基本上,跟以往 Rails 1.X 2.X 时代佈署时会建议你尽量打包依存套件并 commit 出去,在使用 Bundler 后已经大大地不需要了,因为透过 bundle lock 我们就可以确保每台机器上执行的套件版本一致。 bundle exec 因为 Bundle 可以说是独立出一个套件环境,所以如果有非 Rails 的指令需要执行,而且你的系统 Gems 又没有安装,那就会需要透过 bundle exec XXX 来执行。例如 bundle exec cucumber。 bundle show gem_name 可以查看这个 gem 的目录位置 bundle open gem_name 可以用编辑器打开这个 gem 的目录
开发 Rails3 实际用一阵子之后,发现很偏好将套件装成 Gem 了(如果有提供 Gem 版的话),之前 Rails 1.X 2.X 时代会比较喜欢装成 Plugin,因为想说别人要装 Gem 可能会有问题,以及佈署也怕出包。但是有了 Bundler 之后,只要 Bundle install 就可以装好并确保大家的版本一致会动。不像已往的 rake gems:install 超不可靠。可以透过 Bundle 装这些依存套件也减少了需要 commit 出去的 vendor/plugin 档桉,让你的专桉 repository 变乾淨了。另外,我也超喜欢的 Bundler 可以支援 Git 来源,只要 bundle install 就会更新,不需要额外的管理工具去烦恼更新 plugins。
其他推荐阅读:
Library Management Gets an Update in Rails 3: 一般性介紹ASCIIcasts 201: Bundler: 一般性介紹Using the New Gem Bundler Today: 有 Bundler 的設計目標,推薦看第一段即可。Using Bundler in Real Life: Bundle 的使用情境介紹,非常推薦一看Some of the Problems Bundler Solves: 深入舉例 Bundler 要解決的問題,為什麼單靠 Rubygems 和之前的 config.gem 做不到。有時間的話,也推薦一看。例如,其中最主要解決的問題是,目前的 Rubygems 同一時間只能 require 一個版本,所以如果你有兩個套件有不同版本的需求,例如一個套件指定需要 rspec 1.1.12,另一個指定需要 1.2.0。那就爆炸了,會出現 can’t activate rspec(= 1.1.12 runtime), already activated rspec-1.2.0 的錯誤。Named Gem Environments and Bundler: 深入解釋了 Bundler 如何處理 dependency 問題The How and Why of Bundler Groups: 深入解釋 Group 功能Yuhada 在 RubyConf 2009 的演講:Polishing Rubygems
转至:http://ihower.tw/blog/archives/4464
发表评论
-
Diaspora 功能特性列表
2013-05-10 14:25 980Diaspora Function Features List ... -
rails scaffold getting the column list from existing table
2011-09-23 10:02 883之前一直找这个问题的解决办法,但一直没找到,在g上看到了一个人 ... -
ruby语法-传值
2011-08-23 16:49 1020=begin def test1(*a) p a.firs ... -
Rails 3 用 JQuery 替代 Prototype
2011-07-28 22:48 10981.进入到工程目录中修改Gemfile文件,加入如下行: g ... -
Generate a list of Rails controllers and methods
2011-07-01 17:40 824列出项目中的controler和他对应的actions: @c ... -
Ubuntu手动安装JDK
2011-05-20 16:03 539Ubuntu手动安装JDK 安装前可以查看一下jdk版本,进 ... -
bundler
2011-04-25 12:12 803Rails3里多了个Bundler工具。 它是一个Librar ... -
研究小计1
2011-04-20 00:55 631有时候对一些基础的东西,不知道它的边界在哪里,其实做些小实验就 ... -
RubyGem version error: rack(1.0.0 not ~> 1.0.1)
2011-04-17 00:09 1327I have this error when I try to ... -
rubyonrails Restful Authentication 插件
2011-04-17 00:01 781restful_authentication是Rails的一个 ... -
XP.CMD命令大全
2011-04-17 00:00 610有关某个命令的详细信 ... -
几个有用的方法
2011-04-16 23:58 558hash.invert Returns a new hash ... -
Firefox键盘快捷方式
2011-04-16 23:55 1185Firefox键盘快捷方式 键盘快捷健 下面是 Mozil ... -
Ubuntu手动安装JDK
2011-04-16 23:53 708Ubuntu手动安装JDK 安装前可以查看一下jdk版本,进 ... -
字符转时间格式转换成时间对象
2011-04-16 23:52 718Time.parse("Wed, 23 Jan 20 ... -
使用Rails时遇到了服务器启动问题 script/server:3
2011-04-16 23:47 1261境 Windows Vista Home Premium c ... -
DoDirectPayment
2011-04-16 23:44 971DoDirectPayment 1. DoDirectPay ... -
Rails异常处理
2011-04-16 23:43 944异常处理是开发过程中 ... -
ruby和rails中的回调函数
2011-04-16 23:41 1852Ruby中Class,Object,Module这三个类定义了 ... -
深入理解alias, alias_method和alias_method_chain
2011-04-16 23:41 853对 于alias, alias_method, alias_m ...
相关推荐
安装捆绑器: gem install bundler 安装gems: bundle install 设置数据库: rails db:create db:migrate 。 用法 在本地启动Rails && react服务器 $ rails start REST PI文件 在响应中提供完整URL的地方,它们将...
待办事项列表应用程序 检查清单应用程序,您可以在其中与他人共享对检查清单的...# bundle gems gem install bundler bundle # Setup the SQL database rails db:create rails db:migrate # start the server rails s
Bundler,用于安装Gems凭证。 SQLite的 版本3 用于处理和存储帖子内容SQLite数据库管理。 密文 版本3.4 用于哈希和加密数据库密码的Bycrypt宝石。 Html 版本5 对于满足的棒棒糖 CSS 版本3 棒棒糖内容样式...
使用银行会计转账管理器API练习 要求 Ruby 2.7 Postgres 12 入门 克隆此仓库: git clone git@github.com:leandrost/bank-accounting.git cd bank-accounting 设置应用程序: bundle config --local path vendor...
在Sinatra中使用Rails资产 这是一个最小的演示应用程序,展示了如何在 Sinatra 应用程序中使用 。 Rails Assets 将与基于的应用程序集成在一起。 一体化 文件 此应用程序使用将 Sinatra 与 Sprockets 集成的 ...
使用 rubygems 安装它: gem install gaston 使用 bundler,将其添加到您的Gemfile : gem "gaston" 在 rails 项目中,运行以下命令: rails g gaston:config 否则,创建一个初始化程序。 您可以使用env...
幕后花絮RailsBump使用几种方法来检查gem版本是否与特定的Rails版本兼容: 如果gem版本直接依赖于“ Rails gems”之一(rails,railties,activerecord,activesupport等),则可能很明显它与某些Rails版本不立即...
运行 bundler 来安装所需的 gems bundle install 迁移数据库 rake db:migrate 运行 Rails 服务器 rails s 打开浏览器并查看localhost:3000的输出 这些是运行这个项目的步骤。我们希望运行这个没有问题。如果...
什么是宗教裁判所宝石?...RailRoady-帮助您生成Rails 3/4/5模型(ActiveRecord,Mongoid,Datamapper)和控制器UML图表的宝石 Rails ERD-一个为Rails应用程序生成实体关系图的宝石 Rails_best_practice
Rails 门户活动创作、部署和报告系统 设置 先决条件 使用 git、ruby 或 jruby,以及 rubgems、wget Gems:capistrano、capistrano-ext、ruby-debug(奇怪的是,haml也是,部署时……) 待办事项:了解为什么运行 ...
:使用Mustermann模式进行的高效文件系统操作。 :为模式对象制作的Ruby 版本。 :语法突出显示和树的模式可视化。 多种用于mustermann的模式类型,每种模式都是它们自己的小数据库,请参见。 Bundler的Git版本...
如果您正在使用进行项目(例如, 任何Rails项目,大多数Gems以及可能大多数其他Ruby软件),因此都拥有 ,只需将其添加到Gemfile的末尾Gemfile : gem 'meta_events' 另外,如果您不使用Bundler,请执行以下操作:...
- gem install bundler 安装 克隆存储库: $ git clone --recursive https://github.com/moneyadviceservice/frontend.git 安装Mysql 5.7 $ brew install mysql@5.7 $ brew link mysql@5.7 --force 确保MySQL...
gem install rails,领班(将gems目录添加到路径) 在项目目录中运行此命令: > bundle install --path vendor/bundle > cd client > yarn --ignore-engines 在/ certs目录中运行此命令: > openssl genrsa -out...
ActiveRecordFlorder ...如果您使用的是Bundler,请添加到您的Gemfile中 gem 'active_record_florder' , '~> 0.1.0' 或只是通过Ruby Gems安装 gem install active_record_florder 阿皮 这个gem为Act