Rails4环境和配置

2018-10-22 09:37 更新

Rails4环境和配置

Rsils4环境和配置

Rails应用预先配置了三个标准的操作模式:开发、测试和生产。这些模式基本上是执行环境,搜集了相关的设置,确定要连接到的数据库的东西,以及应用程序的类是否应该加载与每个请求。这也很简单,如果需要创建自己的自定义环境。

当前环境下,可以通过指定的环境变量rails_env,这名字所需操作模式,并对应于配置/环境文件夹中的环境定义文件。

你也可以设置环境变量rack_env或作为最后的手段,你可以依靠默认是发展。由于这种环境设置管理一些Rails的最基本的方面,如类加载中,为了真正了解Rails的方式,你应该了解它的环境设置。

在这一章中,我们开始覆盖Bundler,一个管理工具,依赖你的Ruby应用gem。它需要一个gem清单文件,并能够获取,下载,并安装在清单中的gem,和所有的产物。然后我们继续Rails如何启动和处理要求,通过检查脚本,如boot.rb和application.rb和构成三标准环境设置的设置(模式)。

Bundler

Bundler²并非是具体到Rails 4的技术,但它是管理你的应用程序的首选方式。gem的依赖。应用程序生成的Rails 4使用Bundler自动,你不需要安装额外的单独gem自从它成为Rails3的一部分。

因为我们相信你应该使用Bundler,研究如何不使用Bundler的剩下冒险或不墨守成规的读者。

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

在你的配置,这不同于在一个时间依赖性的解决方法。

 假设你的系统有以下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因此当你加载它使用gem命令(从RubyGems库)像这样:

1 gem 'activemerchant', '1.29.3'

结果在activemerchant加载,以及它所依赖的最新版本兼容,包括积极4.0.0.betagem,因为它是大于或等于2.3.14版。随后,试图加载Rsils本身结果在运行时的异常情况如下:

gem 'rails', '3.2.11'
结果在运行时的异常情况下:

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"]
例外情况发生是因为activemerchant具有更广泛的依赖,需要一个激活的支持,不满足Rails旧版本。 
Bundler一次性通过评估所有的附属关系解决了这个问题,并且找出正确的版本进行加载。 

Gemfile 

 位于你的Rails项目的根目录,是一个基于Ruby的gem清单文件命名为Gemfile。这个Gemfile 指定所有附属Gemfile的Rails应用,包括Rails正在使用的版本。基于Gemfile语法超级简单: 
1 gem 'kaminari'
2 gem 'nokogiri'
 仅在特定环境中加载附属项,将其放置在指定一个或多个特定环境中的组块中作为符号的环境名称: 

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的指令是一个带有可选参数描述的rubygem版本所需要的。关闭版本参数只能简单得到可用的稳定版本,这可能不是最新版本 。要包含一个候选版或预览版的gem,你需要明确指定版本。该版本参数格式相匹配的rubygem版本控制方案,你应该已经习惯。 

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参考手册当中找到完整的版本说明。 
有时候,需要的gem储存在不同的库当中。在这些情况下,解决这个问题很简单:选择和声明相应的Gemfile。

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

直接从git仓库装载gem

现在我们已经可以从http://rubygems.org加载gem了。它可以指定一个gem 源库,只要有一个gemspec文件的根目录。只需添加一个git选项来调用 
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要使用哪个版本当解决它的依赖。
1 gem 'deep_merge', '1.0', git: 'git://github.com/peritor/deep_merge.git'
指定一个git版本库包含多个也是有可能的。gemspec文件应被视为一个 gem的来源。下面的例子就是最常见的符合标准的Git仓库Rails代码。(注:你应该不会真的需要把下面的代码放在你的Rails程序的Gemfile当中!)
1 git 'git://github.com/rails/rails.git'
2 gem 'railties'
3 gem 'action_pack'
4 gem 'active_model'
此外,你可以指定一个git仓库应使用特定的判定,分支,或标签的选项的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'
指定一个裁判,分支,或标记为一个Git仓库指定内联使用相同的选项语法。
1 gem 'nokogiri', git:
2 'git://github.com/tenderlove/nokogiri.git',
3 ref => '0eec4'

从文件系统加载的gem

你可以使用一个gem,你正在积极发展你的本地上使用:路径选项。 
1 gem 'nokogiri', path: '~/code/nokogiri'

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号