`

Rails3:使用bundler管理gems

阅读更多

直接在命令行(CMD)执行:
sudo gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
(以上是一行,一次输入并执行)

 

bundle install 时有一个gem出错 下面的gem就不会被安装

[simon@localhost]#rails c                             
Could not find gem 'sqlite3-ruby (>= 0, runtime)' in any of the gem sources.
Try running `bundle install`.

bundle install
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

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  :test   do
    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。

分享到:
评论

相关推荐

    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