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 bundle 安装不上 mysql gem包的问题 环境 ubuntu 12.04 ruby-2.1.1 首先 新建一个的一个项目,在该项目上执行 bundle install 提示 代码如下: … Make sure that gem install mysql2 -v ‘0.3.16’; ...
将这一行添加到应用程序的Gemfile中:gem'trove'并运行:bundle install trove init并在.trove.yml中配置存储。 存储Amazon S3创建存储桶并启用对象版本控制。 接下来,设置您的AWS凭证。 您可以使用AWS CLI:...
在为Rails 3/4/5应用程序安装时,将其添加到Gemfile: gem 'active_link_to'并运行bundle install 。 对于较旧的Rails应用,请在config / environment.rb中添加config.gem 'active_link_to'并运行rake gems:install...
您只需将“ geokit-rails” gem添加到您的Gemfile中gem 'geokit-rails' 然后告诉捆绑器更新gems: $ bundle install 生成配置初始化程序: $ rails g geokit_rails:install 现在,如果您希望使用各种地理编码服务,...
找不到指定的模块。... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)Rails link_to 详解rails常用数据库查询操作、方法浅析学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake,
安装在 Gemfile 中添加以下几行: gem 'therubyracer' , platforms : :ruby # or any other runtimegem 'less-rails'gem 'autoprefixer-rails'gem 'semantic-ui-rails' 然后运行bundle install来安装 gems。 运行...
电缆 这个 gem 允许您在开发中使用 VCR。 当您的应用程序频繁与外部服务交互并且您的连接不畅时,...ENABLE_VCR_CABLE=true bundle exec rails s 或者您可以在 yaml 配置文件中启用vcr_cable (检查下面的部分)。
bundle exec rails g spree_recommended_retail_price:install 测试 请务必捆绑您的依赖项,然后为要运行的规范创建一个虚拟测试应用程序。 bundle bundle exec rake test_app bundle exec rspec spec 在测试您的...
总理 Commontator是一个用于评论的Rails引擎。...rails gems安装: gem 'jquery-rails'gem 'sassc-rails' 然后执行: $ bundle install 初始化程序和迁移运行以下命令以复制Commontator的初始化程序并将其迁移到您的
宝石::银 使用ag快速搜索已安装 gem 中的所有代码。 使用进行搜索的 RubyGems 插件,其灵感来自 Jim Gay 的博客文章。 安装 使用 rubygems ...在 Rails 和 Active Record gems 中搜索“Hello World”。 $ gem
Bruce 浏览了您在 Rails 产品或 Gem 中使用的所有 Gems,并让您了解您的产品在澳大利亚的情况。 安装 将此行添加到应用程序的 Gemfile 中: gem 'bruce' 然后执行: $ bundle 用法 运行 rake 任务以创建百分比...
Akibox教程– Rails 这是一个教程项目,可帮助您了解秋田。 它包含一个REST API的Rails实现,用于玩具类似Dropbox的服务。 您可以使用Akita为该API生成模型,进行一些更改,然后在Akita的语义差异中查看对该API产生...
想了解更多或有问题 rails new --help Rails 应用程序结构 Git概述 git add -A git commit -m 'Initial commit' 我们在这个项目中使用的宝石 如何将 Gems 加入您的项目 在文本编辑器中打开您的 Gemfile。 gem '...
最初,有一个使用gem'rails_admin'或gem“ administrate”的想法,但是由于它们的冗余功能,出现了编写自己的管理面板的想法。 安装和启动 在启动应用程序之前,您必须安装所有必需的gems并准备数据库。 为此,在...
Rails 5.1+ Rails JavaScript帮助器已被重写为新的gems,称为rails-ujs,它们使用香草JavaScript,因此jQuery不再是Rails的依赖项。 由于引导程序依赖于此,因此请使用bin/yarn add jquery安装,以bin/yarn add ...
Rails.root所有内容标准库安装将此行添加到您的应用程序的Gemfile中: gem 'peek-rblineprof'然后执行: $ bundle或自己安装为: $ gem install peek-rblineprof用法将以下内容添加到您的config/initializers/peek....
如果您可能克隆了de project并且rails无法运行,那么您已经添加了gems bundle install 什么是Ruby on Rails Rails是一个用于开发应用程序和许多用于Web的东西的Web框架。 如果要创建一个包含“创建”,“更新”,...
起床和运行请执行以下操作: # make a new rails instance $ rails new magnetism_demo # add two gems to your Gemfile gem 'magnetism', :git => 'git://github.com/daneharrigan/magnetism.git', :branch => '...
待办事项列表应用程序 检查清单应用程序,您可以在其中与他人共享对检查清单的...# bundle gems gem install bundler bundle # Setup the SQL database rails db:create rails db:migrate # start the server rails s
数据火箭:: Style Datarockets共享样式配置和代码样式约定的注释。 基于。 这个配置执行了datarockets 概述的许多准则。 安装 将此行添加到您的应用... 它适用于Ruby gems和no-Rails应用程序。 inherit_gem : da