Rails_Gemfile_Bundle_是否需要制定gem的版本_多机器运行环境一致问题_Gems版本保持一致
Rails目录下有两个文件,Gemfile和Gemfile.lock
Gemfile中,很多gem都指定了版本,但也有些麽有指定版本。
所以问题出来了:
为什么有些指定,有些不指定。
那些没有指定版本的gem包,安装后,到底装的什么版本?
部署多台服务器,这些gems包能保持版本一致么?
先了解下rubygems的版本规范,可以看这里,或者查找下pessimistic version constraint 或者 semantic_versioning。
这样就知道,Gemfile里面指定了=version的,肯定会用指定的版本。
而使用:gem 'mysql2', '~> 0.3.10' 或者 'rspec-rails', '>= 2.12.2' 版本的,将可能导致版本升级。
bundle在控制版本的时候,有一套复杂机制,毕竟版本冲突总是可能出现的,maven等工具也是有的。
一旦运行完毕,版本基本就确定了,会存入Gemfile.lock
之后除非自己手动修改版本,否则不会更新版本了。
但是一旦运行 bundle update,就会重新计算并对比gem仓库的最新版本。也就是说,若不手动修改版本,并且不手动运行update操作,这些版本就会固定下来。
如果不想有任何改变,也担心不小心运行了update操作,可以用bundle lock锁定,除非unlock,否则无忧了。
部署多台服务器,这些gems包能保持版本一致么?
特例:从github上拿来的gem库
Bundler adds the ability to use gems directly from git repositories. Setting them up is as easy as adding a gem to your Gemfile.
使用的一个好方式是自己fork一个,便于管理等:Using the very latest version of a gem (or even a fork) is just as easy as using an official release.
但是Bundle并不能很好的管理这种gem:Because Rubygems lacks the ability to handle gems from git, any gems installed from a git repository will not show up in gem list
.
最要命的是,每次都会检查线上的更新,老提示你install。
什么好办法,除了自己fork
Local Git Repos
这种时候,可以指定版本,别让他自动升级。
:git => 'git://github.com/rails/rails.git', :ref => '4aded' :git => 'git://github.com/rails/rails.git', :branch => '2-3-stable' :git => 'git://github.com/rails/rails.git', :tag => 'v2.3.5'
小结:
bundle还是相当友好的。正确理解基础上,基本不会出问题了。
prefer:
http://stackoverflow.com/questions/9265213/should-i-specify-exact-versions-in-my-gemfile
http://stackoverflow.com/questions/9265213/should-i-specify-exact-versions-in-my-gemfile
http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
http://bundler.io/v1.3/git.html
+
+
+
=
+
=
+
相关推荐
Rails 4.2.0 是一个非常重要的版本,在Ruby on Rails框架的历史中占据了显著位置。这个版本引入了许多新特性、改进和性能优化,为开发者提供了更高效和灵活的开发环境。Ruby 4.2.0是这个框架所依赖的编程语言的一个...
1. **Ruby on Rails 3**:本文档主要针对 Rails 3 版本。 2. **Solr**:全文检索引擎,Sunspot 依赖于 Solr 来实现其功能。 3. **Sunspot gem**:Sunspot 的核心 gem,通过这个 gem 可以轻松配置和使用 Sunspot 功能...
- `bundle exec [command]`: 在 Gem 环境下执行命令,确保使用的是 Gemfile 中指定的版本。 8. **Gem 的版本管理** - `gem 'gem_name', '~> x.y.z'`: 强制 Gem 版本在 x.y.z 与 x.y+1.0 之间。 - `gem 'gem_name...
在开发过程中,可能会需要安装一些外部依赖的 gems,可以通过执行 `$ bundle install` 命令来安装 Gemfile 中列出的所有 gems。 #### 六、配置数据库 Rails 支持多种数据库,可以根据需求进行配置: - 默认情况下...
安装完成后,你可以通过运行 `rails -v` 来检查Rails是否已正确安装,并查看其版本号。 5. **创建新的Rails项目**: 要创建一个新的Rails应用,运行 `rails new app_name`,这将生成一个包含默认目录结构的新项目...
此外,Gemfile和Gemfile.lock文件在Ruby on Rails项目中尤其常见,它们用于声明项目依赖并锁定具体版本,通过`bundle install`命令管理。Bundler是一个额外的工具,它使得在多Gem项目中的依赖管理更为简单和可靠。 ...
为了确保项目能够正确使用MySQL数据库驱动,我们需要在`Gemfile`中指定MySQL2 gem版本。 ```ruby source 'https://ruby.taobao.org' gem 'mysql2', '~>0.3.18' ``` ##### 3. 修改database.yml配置文件 接下来,...
解决 Rails bundle 安装不上 mysql gem包的问题 环境 ubuntu 12.04 ruby-2.1.1 首先 新建一个的一个项目,在该项目上执行 bundle install 提示 代码如下: … Make sure that gem install mysql2 -v ‘0.3.16’; ...
此外,你还需要安装其他可能的依赖库,比如开发工具集`bundle install`,这将根据`Gemfile`中的定义安装所有必需的gem。 至此,你已经成功安装了Ruby on Rails,并具备了基本的开发环境。继续学习Rails的MVC结构、...
通过`Gemfile`,开发者可以指定应用所需的Gem版本,然后使用`bundle install`命令安装和管理这些Gem。 8. **数据库迁移** Rails的`db/migrate`目录存储数据库迁移文件,这些文件定义了数据库结构的变化。使用`...
2. **Gemfile.lock**:记录项目的精确gem版本,确保在不同环境中部署时保持一致性。 3. **config/**:配置文件夹,包含数据库配置、路由设置(routes.rb)、应用配置等。 4. **db/**:数据库相关文件,如数据库...
10. **Rakefile** 和 **Gemfile.lock**:Rakefile用于执行自定义任务,而Gemfile.lock记录了具体的gem版本,确保在不同环境中使用一致的依赖。 11. **Procfile**:对于Heroku部署,这个文件定义了应用启动时需要...
`Gemfile`是Ruby项目中的一个文件,列出了项目依赖的所有Gem及其版本,使用`bundle`命令可以安装和更新这些Gem,确保所有开发者在同一环境中使用相同版本的库。 7. **持续集成与部署**: 在团队协作中,使用多版本...
2. **管理Gem版本**:RubyGems允许指定Gem的版本,确保项目依赖的一致性。例如,`gem 'nokogiri', '~> 1.10.8'`会安装1.10.8或更高但不超过1.11.0的nokogiri版本。 3. **创建Gem**:开发者可以将自己的代码封装成...
将这一行添加到应用程序的Gemfile中:gem'trove'并运行:bundle install trove init并在.trove.yml中配置存储。 存储Amazon S3创建存储桶并启用对象版本控制。 接下来,设置您的AWS凭证。 您可以使用AWS CLI:...
3. **Gemfile和Bundler**:Rails项目中的`Gemfile`用于指定项目依赖的Gem(Ruby的库)。Bundler工具用于管理这些Gem,通过`bundle install`命令安装和更新Gem。 4. **路由**:Rails的路由系统将URL映射到控制器的...
在为Rails 3/4/5应用程序安装时,将其添加到Gemfile: gem 'active_link_to'并运行bundle install 。 对于较旧的Rails应用,请在config / environment.rb中添加config.gem 'active_link_to'并运行rake gems:install...
在IT行业中,Redmine是一个非常受欢迎的开源项目管理工具,它基于Ruby on Rails框架构建,提供了丰富的功能,如问题跟踪、项目文档管理、时间跟踪等。对于那些无法连接到互联网或者网络环境受限的用户,离线安装...