• bundler简介(ruby gem)


    簡介 Bundler

     

    RubyGem 是包裝、散佈Ruby程式庫的標準方式,相關文件可以參考 RubyGems Guides 的說明,或是 簡介 plugins 中的第二個例子。在使用rails new建立新專案時,會執行bundle install安裝應用程式使用到的Gem,例如在 安裝 Rails 中看到的例子:

    ~$ rails new hello
          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建立新專案時,可以先略過連線:

    ~$ rails new gossip --skip-bundle

    之後執行bundle install時指定--local選項:

    ~gossip$ 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

  • 相关阅读:
    从苹果系统InstallESD.dmg里提取IOS
    Swift编程语言中文版教程---《The Swift Programming Language》
    VMware workstation 10.0的永久key
    VMware Workstation与Hyper-V不兼容。请先从系统中移除Hyper-V角色,然后再运行VMware Workstation。
    Unity3D游戏制作入门教程
    MyEclipse中文网
    机器学习中的两个概率模型
    机器学习中的两个概率模型
    EM算法概念
    EM算法概念
  • 原文地址:https://www.cnblogs.com/yulongzhou/p/6392329.html
Copyright © 2020-2023  润新知