Rails4環(huán)境和配置

2018-10-22 09:37 更新

Rails4環(huán)境和配置

Rsils4環(huán)境和配置

Rails應(yīng)用預(yù)先配置了三個標(biāo)準(zhǔn)的操作模式:開發(fā)、測試和生產(chǎn)。這些模式基本上是執(zhí)行環(huán)境,搜集了相關(guān)的設(shè)置,確定要連接到的數(shù)據(jù)庫的東西,以及應(yīng)用程序的類是否應(yīng)該加載與每個請求。這也很簡單,如果需要創(chuàng)建自己的自定義環(huán)境。

當(dāng)前環(huán)境下,可以通過指定的環(huán)境變量rails_env,這名字所需操作模式,并對應(yīng)于配置/環(huán)境文件夾中的環(huán)境定義文件。

你也可以設(shè)置環(huán)境變量rack_env或作為最后的手段,你可以依靠默認是發(fā)展。由于這種環(huán)境設(shè)置管理一些Rails的最基本的方面,如類加載中,為了真正了解Rails的方式,你應(yīng)該了解它的環(huán)境設(shè)置。

在這一章中,我們開始覆蓋Bundler,一個管理工具,依賴你的Ruby應(yīng)用gem。它需要一個gem清單文件,并能夠獲取,下載,并安裝在清單中的gem,和所有的產(chǎn)物。然后我們繼續(xù)Rails如何啟動和處理要求,通過檢查腳本,如boot.rb和application.rb和構(gòu)成三標(biāo)準(zhǔn)環(huán)境設(shè)置的設(shè)置(模式)。

Bundler

Bundler2并非是具體到Rails 4的技術(shù),但它是管理你的應(yīng)用程序的首選方式。gem的依賴。應(yīng)用程序生成的Rails 4使用Bundler自動,你不需要安裝額外的單獨gem自從它成為Rails3的一部分。

因為我們相信你應(yīng)該使用Bundler,研究如何不使用Bundler的剩下冒險或不墨守成規(guī)的讀者。

gem指定的完整列表依賴解析是最重要的事情

在你的配置,這不同于在一個時間依賴性的解決方法。

 假設(shè)你的系統(tǒng)有以下rubygem版本安裝:

1 activesupport 4.0.0.beta
2 activesupport 3.2.11
3 activemerchant 1.29.3
4 rails 3.2.11
 原來,activemerchant 1.29.3取決于activesupport 版本> = 2.3.14因此當(dāng)你加載它使用gem命令(從RubyGems庫)像這樣:

1 gem 'activemerchant', '1.29.3'

結(jié)果在activemerchant加載,以及它所依賴的最新版本兼容,包括積極4.0.0.betagem,因為它是大于或等于2.3.14版。隨后,試圖加載Rsils本身結(jié)果在運行時的異常情況如下:

gem 'rails', '3.2.11'
結(jié)果在運行時的異常情況下:

1 can't activate activesupport (= 3.2.11, runtime)
2 for ["rails-3.2.11"], already activated
3 activesupport-4.0.beta for ["activemerchant-1.29.3"]
例外情況發(fā)生是因為activemerchant具有更廣泛的依賴,需要一個激活的支持,不滿足Rails舊版本。 
Bundler一次性通過評估所有的附屬關(guān)系解決了這個問題,并且找出正確的版本進行加載。 

Gemfile 

 位于你的Rails項目的根目錄,是一個基于Ruby的gem清單文件命名為Gemfile。這個Gemfile 指定所有附屬Gemfile的Rails應(yīng)用,包括Rails正在使用的版本?;贕emfile語法超級簡單: 
1 gem 'kaminari'
2 gem 'nokogiri'
 僅在特定環(huán)境中加載附屬項,將其放置在指定一個或多個特定環(huán)境中的組塊中作為符號的環(huán)境名稱: 

1 group :development do
2 gem 'pry-rails'
3 end
4
5 group :test do
6 gem 'capybara'
7 gem 'database_cleaner'
8 end
9
10 group :development, :test do
11 gem 'rspec-rails'
12 gem 'factory_girl_rails'
13 end

 gem的指令是一個帶有可選參數(shù)描述的rubygem版本所需要的。關(guān)閉版本參數(shù)只能簡單得到可用的穩(wěn)定版本,這可能不是最新版本 。要包含一個候選版或預(yù)覽版的gem,你需要明確指定版本。該版本參數(shù)格式相匹配的rubygem版本控制方案,你應(yīng)該已經(jīng)習(xí)慣。 

1 gem 'nokogiri', '1.5.6'
2 gem 'pry-rails', '> 0.2.2'
3 gem 'decent_exposure', '~> 2.0.1'
4 gem 'draper', '1.0.0.beta6'
你可以在RubyGems參考手冊當(dāng)中找到完整的版本說明。 
有時候,需要的gem儲存在不同的庫當(dāng)中。在這些情況下,解決這個問題很簡單:選擇和聲明相應(yīng)的Gemfile。

1 gem 'webmock', require: 'webmock/rspec'

直接從git倉庫裝載gem

現(xiàn)在我們已經(jīng)可以從http://rubygems.org加載gem了。它可以指定一個gem 源庫,只要有一個gemspec文件的根目錄。只需添加一個git選項來調(diào)用 
gem。
1 gem 'carrierwave', git: 'git@github.com:jnicklas/carrierwave.git'
如果gem的源庫是托管在GitHub上,是公開的,你可以直接使用。
1 gem 'carrierwave', github: 'jnicklas/carrierwave'
二進制代碼或C的擴展,也支持gemspecs。
1 gem 'nokogiri', git: 'git://github.com/tenderlove/nokogiri.git'
如果gemspec文件沒有在gem’s的Git庫的根目錄,你必須告訴Bundler要使用哪個版本當(dāng)解決它的依賴。
1 gem 'deep_merge', '1.0', git: 'git://github.com/peritor/deep_merge.git'
指定一個git版本庫包含多個也是有可能的。gemspec文件應(yīng)被視為一個 gem的來源。下面的例子就是最常見的符合標(biāo)準(zhǔn)的Git倉庫Rails代碼。(注:你應(yīng)該不會真的需要把下面的代碼放在你的Rails程序的Gemfile當(dāng)中!)
1 git 'git://github.com/rails/rails.git'
2 gem 'railties'
3 gem 'action_pack'
4 gem 'active_model'
此外,你可以指定一個git倉庫應(yīng)使用特定的判定,分支,或標(biāo)簽的選項的Git指令:
1 git 'git://github.com/rails/rails.git',
2 ref: '4aded'
3
4 git 'git://github.com/rails/rails.git',
5 branch: '3-2-stable'
6
7 git 'git://github.com/rails/rails.git',
8 tag: 'v3.2.11'
指定一個裁判,分支,或標(biāo)記為一個Git倉庫指定內(nèi)聯(lián)使用相同的選項語法。
1 gem 'nokogiri', git:
2 'git://github.com/tenderlove/nokogiri.git',
3 ref => '0eec4'

從文件系統(tǒng)加載的gem

你可以使用一個gem,你正在積極發(fā)展你的本地上使用:路徑選項。 
1 gem 'nokogiri', path: '~/code/nokogiri'

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號