`

Rails3:使用bundler管理gems

阅读更多
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


分享到:
评论

相关推荐

    rails-4.2.0-gems

    3. 克隆或下载Rails 4.2.0项目的源代码,或者创建一个新的Rails项目,使用`rails new my_app -d sqlite3`命令,其中`my_app`是你的应用名,`-d sqlite3`指定使用SQLite数据库。 4. 进入项目目录,运行`bundle ...

    rails 的安装

    "rails_gems" 这个文件名可能指的是Rails项目中使用的Gem包。在`Gemfile`中,你可以列出项目所需的所有外部库或服务,然后通过运行 `bundle install` 来安装它们。这将确保所有依赖都处于正确的版本并能正常工作。 ...

    ansible-rails:使用Ansible部署Ruby on Rails-使用Lets Encrypt,Sidekiq,PostgreSQL,nginx和puma

    本篇文章将详细探讨如何使用Ansible部署一个基于Ruby on Rails的应用,该应用集成了Lets Encrypt(用于SSL证书)、Sidekiq(后台任务处理)、PostgreSQL(数据库服务)、nginx(反向代理)和puma(Web服务器)。...

    免费Ubuntu系统ruby on rails安装【保姆级教程】

    确保Ruby Gems已安装,然后安装Bundler,这是一个管理Rails应用依赖的工具: ``` rvm requirements gem install bundler ``` 8. **安装Rails**: 最后,安装Rails框架: ``` gem install rails ``` 9. **...

    rails 开发手册

    2. **Gemfile与依赖管理**:Rails使用Bundler来管理项目依赖,Gemfile用于声明项目所需的Ruby gems。手册将解释如何配置Gemfile,以及如何安装和更新gem。 3. **ActiveRecord**:这是Rails的ORM(对象关系映射)库...

    Agile Web Development with Rails Final

    - 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. **...

    rails4noobs:在Ruby on Rails上存储库!

    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的地方,它们将...

    ruby on rails api

    9. **Gemfile和Bundler**:Gemfile用于定义项目依赖的Ruby gems,Bundler则管理这些依赖,确保在不同环境中的一致性。 10. **Scaffolding**:快速生成基本的CRUD(创建、读取、更新、删除)操作的代码,是Rails开发...

    Mac上rails环境的搭建

    Bundler 是一个用于管理Ruby项目依赖的工具,通过它我们可以轻松地安装项目所需的Ruby库。 ```bash sudo gem install bundler ``` ##### 2. 安装Xcode Command Line Tools 为了支持某些命令行工具的运行,我们...

    共享待办事项:Rails和JavaScript清单列出了具有共享功能的应用程序

    待办事项列表应用程序 检查清单应用程序,您可以在其中与他人共享对检查清单的...# bundle gems gem install bundler bundle # Setup the SQL database rails db:create rails db:migrate # start the server rails s

    资源for rails

    3. **Gemfile和Bundler**:Rails项目中的`Gemfile`用于指定项目依赖的Gem(Ruby的库)。Bundler工具用于管理这些Gem,通过`bundle install`命令安装和更新Gem。 4. **路由**:Rails的路由系统将URL映射到控制器的...

    利用rails脚手架制作的简单网站

    6. **Gemfile和依赖管理**:Rails项目使用Bundler管理外部库(称为Gems)。`Gemfile`列出了项目所需的所有依赖,`bundle install`命令会安装它们。 7. **测试**:Rails鼓励TDD(Test-Driven Development)和BDD...

    For-Rails-Beginners::Japanese_symbol_for_beginner:Ruby on Rails的初学者有福了

    7. **Gemfile与Bundler**:Gemfile是Rails项目的依赖管理文件,用来列出项目需要的Ruby gems(即库)。Bundler工具则负责安装和管理这些gem,确保每个开发者的环境一致。 8. **开发环境与部署**:Rails应用通常使用...

    Rails相关电子书汇总二

    7. **Gem管理**:Ruby的包管理器Gemfile和bundler的使用,以及常见的Rails gems如Devise(身份验证)、CanCanCan(授权)、Pundit(授权)等。 8. **部署**:如何将Rails应用部署到服务器,如Capistrano、Heroku、...

    learn-rails:我在 Github 上的第一个仓库

    了解如何添加和管理 gems 对于扩展 Rails 功能很重要。 9. **Database Setup**:Rails 使用 ActiveRecord 连接数据库,如 SQLite、MySQL 或 PostgreSQL。理解如何配置数据库连接以及迁移机制是必要的。 10. **...

    RailsGuides中那个blog程序源码

    **Gemfile和依赖管理** - Rails应用通过Gemfile来声明其依赖的Ruby gems,如`bundler`用来管理这些依赖,确保所有gem版本的一致性。 **初始化文件和配置** - `config/application.rb` 和 `config/environment.rb` ...

    ubuntu 10.10系统安装及vim(ROR)开发环境完整配置

    3. **安装Bundler**:用于管理Ruby项目依赖,`gem install bundler`。 4. **安装Rails**:`gem install rails`,这将安装最新版本的Rails框架。 5. **创建Rails项目**:使用`rails new project_name`新建项目。 6...

    BookTalk:BookTalk是一个由Ruby on Rails开发的不错的平台,并且是电子书在线售票系统和管理的理想平台。 BookTalk是众多超级用户功能和用户和客户轻松使用的理想提供商

    Bundler,用于安装Gems凭证。 SQLite的 版本3 用于处理和存储帖子内容SQLite数据库管理。 密文 版本3.4 用于哈希和加密数据库密码的Bycrypt宝石。 Html 版本5 对于满足的棒棒糖 CSS 版本3 棒棒糖内容样式...

Global site tag (gtag.js) - Google Analytics