- 浏览: 60420 次
- 性别:
- 来自: 深圳
最新评论
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 1032Diaspora Function Features List ... -
rails scaffold getting the column list from existing table
2011-09-23 10:02 925之前一直找这个问题的解决办法,但一直没找到,在g上看到了一个人 ... -
ruby语法-传值
2011-08-23 16:49 1060=begin def test1(*a) p a.firs ... -
Rails 3 用 JQuery 替代 Prototype
2011-07-28 22:48 11401.进入到工程目录中修改Gemfile文件,加入如下行: g ... -
Generate a list of Rails controllers and methods
2011-07-01 17:40 862列出项目中的controler和他对应的actions: @c ... -
Ubuntu手动安装JDK
2011-05-20 16:03 579Ubuntu手动安装JDK 安装前可以查看一下jdk版本,进 ... -
bundler
2011-04-25 12:12 834Rails3里多了个Bundler工具。 它是一个Librar ... -
研究小计1
2011-04-20 00:55 668有时候对一些基础的东西,不知道它的边界在哪里,其实做些小实验就 ... -
RubyGem version error: rack(1.0.0 not ~> 1.0.1)
2011-04-17 00:09 1365I have this error when I try to ... -
rubyonrails Restful Authentication 插件
2011-04-17 00:01 817restful_authentication是Rails的一个 ... -
XP.CMD命令大全
2011-04-17 00:00 641有关某个命令的详细信 ... -
几个有用的方法
2011-04-16 23:58 593hash.invert Returns a new hash ... -
Firefox键盘快捷方式
2011-04-16 23:55 1222Firefox键盘快捷方式 键盘快捷健 下面是 Mozil ... -
Ubuntu手动安装JDK
2011-04-16 23:53 738Ubuntu手动安装JDK 安装前可以查看一下jdk版本,进 ... -
字符转时间格式转换成时间对象
2011-04-16 23:52 787Time.parse("Wed, 23 Jan 20 ... -
使用Rails时遇到了服务器启动问题 script/server:3
2011-04-16 23:47 1294境 Windows Vista Home Premium c ... -
DoDirectPayment
2011-04-16 23:44 1005DoDirectPayment 1. DoDirectPay ... -
Rails异常处理
2011-04-16 23:43 966异常处理是开发过程中 ... -
ruby和rails中的回调函数
2011-04-16 23:41 1891Ruby中Class,Object,Module这三个类定义了 ... -
深入理解alias, alias_method和alias_method_chain
2011-04-16 23:41 896对 于alias, alias_method, alias_m ...
相关推荐
3. 克隆或下载Rails 4.2.0项目的源代码,或者创建一个新的Rails项目,使用`rails new my_app -d sqlite3`命令,其中`my_app`是你的应用名,`-d sqlite3`指定使用SQLite数据库。 4. 进入项目目录,运行`bundle ...
"rails_gems" 这个文件名可能指的是Rails项目中使用的Gem包。在`Gemfile`中,你可以列出项目所需的所有外部库或服务,然后通过运行 `bundle install` 来安装它们。这将确保所有依赖都处于正确的版本并能正常工作。 ...
本篇文章将详细探讨如何使用Ansible部署一个基于Ruby on Rails的应用,该应用集成了Lets Encrypt(用于SSL证书)、Sidekiq(后台任务处理)、PostgreSQL(数据库服务)、nginx(反向代理)和puma(Web服务器)。...
确保Ruby Gems已安装,然后安装Bundler,这是一个管理Rails应用依赖的工具: ``` rvm requirements gem install bundler ``` 8. **安装Rails**: 最后,安装Rails框架: ``` gem install rails ``` 9. **...
2. **Gemfile与依赖管理**:Rails使用Bundler来管理项目依赖,Gemfile用于声明项目所需的Ruby gems。手册将解释如何配置Gemfile,以及如何安装和更新gem。 3. **ActiveRecord**:这是Rails的ORM(对象关系映射)库...
- Installing Rails on Windows requires setting up Ruby, installing gems like `bundler`, and configuring the environment. Developers often use tools like RubyInstaller and DevKit for Windows. 2. **...
10. **Gemfile和依赖管理**:Rails项目使用Bundler管理外部库(称为Gems)。`Gemfile`定义了项目所依赖的Gem,`bundle install`命令会安装所有依赖。 11. **版本控制**:教程可能还会介绍如何使用Git进行版本控制,...
安装捆绑器: gem install bundler 安装gems: bundle install 设置数据库: rails db:create db:migrate 。 用法 在本地启动Rails && react服务器 $ rails start REST PI文件 在响应中提供完整URL的地方,它们将...
9. **Gemfile和Bundler**:Gemfile用于定义项目依赖的Ruby gems,Bundler则管理这些依赖,确保在不同环境中的一致性。 10. **Scaffolding**:快速生成基本的CRUD(创建、读取、更新、删除)操作的代码,是Rails开发...
Bundler 是一个用于管理Ruby项目依赖的工具,通过它我们可以轻松地安装项目所需的Ruby库。 ```bash sudo gem install bundler ``` ##### 2. 安装Xcode Command Line Tools 为了支持某些命令行工具的运行,我们...
待办事项列表应用程序 检查清单应用程序,您可以在其中与他人共享对检查清单的...# bundle gems gem install bundler bundle # Setup the SQL database rails db:create rails db:migrate # start the server rails s
3. **Gemfile和Bundler**:Rails项目中的`Gemfile`用于指定项目依赖的Gem(Ruby的库)。Bundler工具用于管理这些Gem,通过`bundle install`命令安装和更新Gem。 4. **路由**:Rails的路由系统将URL映射到控制器的...
6. **Gemfile和依赖管理**:Rails项目使用Bundler管理外部库(称为Gems)。`Gemfile`列出了项目所需的所有依赖,`bundle install`命令会安装它们。 7. **测试**:Rails鼓励TDD(Test-Driven Development)和BDD...
7. **Gemfile与Bundler**:Gemfile是Rails项目的依赖管理文件,用来列出项目需要的Ruby gems(即库)。Bundler工具则负责安装和管理这些gem,确保每个开发者的环境一致。 8. **开发环境与部署**:Rails应用通常使用...
7. **Gem管理**:Ruby的包管理器Gemfile和bundler的使用,以及常见的Rails gems如Devise(身份验证)、CanCanCan(授权)、Pundit(授权)等。 8. **部署**:如何将Rails应用部署到服务器,如Capistrano、Heroku、...
了解如何添加和管理 gems 对于扩展 Rails 功能很重要。 9. **Database Setup**:Rails 使用 ActiveRecord 连接数据库,如 SQLite、MySQL 或 PostgreSQL。理解如何配置数据库连接以及迁移机制是必要的。 10. **...
**Gemfile和依赖管理** - Rails应用通过Gemfile来声明其依赖的Ruby gems,如`bundler`用来管理这些依赖,确保所有gem版本的一致性。 **初始化文件和配置** - `config/application.rb` 和 `config/environment.rb` ...
3. **安装Bundler**:用于管理Ruby项目依赖,`gem install bundler`。 4. **安装Rails**:`gem install rails`,这将安装最新版本的Rails框架。 5. **创建Rails项目**:使用`rails new project_name`新建项目。 6...
Bundler,用于安装Gems凭证。 SQLite的 版本3 用于处理和存储帖子内容SQLite数据库管理。 密文 版本3.4 用于哈希和加密数据库密码的Bycrypt宝石。 Html 版本5 对于满足的棒棒糖 CSS 版本3 棒棒糖内容样式...