`
fantaxy025025
  • 浏览: 1241268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Rails_Gemfile_Bundle_是否需要指定gem的版本_多机器运行环境一致问题_Gems版本保持一致

 
阅读更多

 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

 

这种时候,可以指定版本,别让他自动升级。

Specify that a git repository should use a particular ref, branch, or tag
: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/4292905/what-is-the-difference-between-and-when-specifying-rubygem-in-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包出错的解决方法

    解决 Rails bundle 安装不上 mysql gem包的问题 环境 ubuntu 12.04 ruby-2.1.1 首先 新建一个的一个项目,在该项目上执行 bundle install 提示 代码如下: … Make sure that gem install mysql2 -v ‘0.3.16’; ...

    在Ruby(和Rails)中部署机器学习模型-Ruby开发

    将这一行添加到应用程序的Gemfile中:gem'trove'并运行:bundle install tr​​ove init并在.trove.yml中配置存储。 存储Amazon S3创建存储桶并启用对象版本控制。 接下来,设置您的AWS凭证。 您可以使用AWS CLI:...

    active_link_to:Rails视图助手来管理链接的“活动”状态

    在为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:RailsActiveRecord的官方Geokit插件。 为您的Rails应用提供基于位置的优势。 需要Geokit宝石

    您只需将“ geokit-rails” gem添加到您的Gemfile中gem 'geokit-rails' 然后告诉捆绑器更新gems: $ bundle install 生成配置初始化程序: $ rails g geokit_rails:install 现在,如果您希望使用各种地理编码服务,...

    rails 连接mysql的问题解决

    找不到指定的模块。... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)Rails link_to 详解rails常用数据库查询操作、方法浅析学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake,

    semantic-ui-rails

    安装在 Gemfile 中添加以下几行: gem 'therubyracer' , platforms : :ruby # or any other runtimegem 'less-rails'gem 'autoprefixer-rails'gem 'semantic-ui-rails' 然后运行bundle install来安装 gems。 运行...

    vcr_cable:在开发中使用 VCR(或您喜欢的任何 Rails 环境)

    电缆 这个 gem 允许您在开发中使用 VCR。 当您的应用程序频繁与外部服务交互并且您的连接不畅时,...ENABLE_VCR_CABLE=true bundle exec rails s 或者您可以在 yaml 配置文件中启用vcr_cable (检查下面的部分)。

    spree_recommended_retail_price

    bundle exec rails g spree_recommended_retail_price:install 测试 请务必捆绑您的依赖项,然后为要运行的规范创建一个虚拟测试应用程序。 bundle bundle exec rake test_app bundle exec rspec spec 在测试您的...

    commontator:使用Rails引擎进行评论

    总理 Commontator是一个用于评论的Rails引擎。...rails gems安装: gem 'jquery-rails'gem 'sassc-rails' 然后执行: $ bundle install 初始化程序和迁移运行以下命令以复制Commontator的初始化程序并将其迁移到您的

    gem-ag:使用 The Silver Searcher 进行搜索的 Gem 命令

    宝石::银 使用ag快速搜索已安装 gem 中的所有代码。 使用进行搜索的 RubyGems 插件,其灵感来自 Jim Gay 的博客文章。 安装 使用 ruby​​gems ...在 Rails 和 Active Record gems 中搜索“Hello World”。 $ gem

    bruce:Bruce 检测您的 Rails 项目有多澳大利亚

    Bruce 浏览了您在 Rails 产品或 Gem 中使用的所有 Gems,并让您了解您的产品在澳大利亚的情况。 安装 将此行添加到应用程序的 Gemfile 中: gem 'bruce' 然后执行: $ bundle 用法 运行 rake 任务以创建百分比...

    akibox-rails:Akibox的Rails实施

    Akibox教程– Rails 这是一个教程项目,可帮助您了解秋田。 它包含一个REST API的Rails实现,用于玩具类似Dropbox的服务。 您可以使用Akita为该API生成模型,进行一些更改,然后在Akita的语义差异中查看对该API产生...

    sign-ups:这是我们处理用户注册的地方

    想了解更多或有问题 rails new --help Rails 应用程序结构 Git概述 git add -A git commit -m 'Initial commit' 我们在这个项目中使用的宝石 如何将 Gems 加入您的项目 在文本编辑器中打开您的 Gemfile。 gem '...

    confetico:网上商城

    最初,有一个使用gem'rails_admin'或gem“ administrate”的想法,但是由于它们的冗余功能,出现了编写自己的管理面板的想法。 安装和启动 在启动应用程序之前,您必须安装所有必需的gems并准备数据库。 为此,在...

    material-sass:Bootstrap 4的材料设计的Ruby

    Rails 5.1+ Rails JavaScript帮助器已被重写为新的gems,称为rails-ujs,它们使用香草JavaScript,因此jQuery不再是Rails的依赖项。 由于引导程序依赖于此,因此请使用bin/yarn add jquery安装,以bin/yarn add ...

    peek-rblineprof:窥视一下整个请求中,Rails应用程序的每一行要花费多少

    Rails.root所有内容标准库安装将此行添加到您的应用程序的Gemfile中: gem 'peek-rblineprof'然后执行: $ bundle或自己安装为: $ gem install peek-rblineprof用法将以下内容添加到您的config/initializers/peek....

    rails-ruby-course1:Successor al repositorio de Sinatra和de Ruby,在est llevaremos acabo todo lo que hay de laaplicaciónmássusañadidos

    如果您可能克隆了de project并且rails无法运行,那么您已经添加了gems bundle install 什么是Ruby on Rails Rails是一个用于开发应用程序和许多用于Web的东西的Web框架。 如果要创建一个包含“创建”,“更新”,...

    magnetism:[死] 一个网站 CMS

    起床和运行请执行以下操作: # 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 => '...

    共享待办事项:Rails和JavaScript清单列出了具有共享功能的应用程序

    待办事项列表应用程序 检查清单应用程序,您可以在其中与他人共享对检查清单的...# bundle gems gem install bundler bundle # Setup the SQL database rails db:create rails db:migrate # start the server rails s

    datarockets样式:共享的Ruby样式配置

    数据火箭:: Style Datarockets共享样式配置和代码样式约定的注释。 基于。 这个配置执行了datarockets 概述的许多准则。 安装 将此行添加到您的应用... 它适用于Ruby gems和no-Rails应用程序。 inherit_gem : da

Global site tag (gtag.js) - Google Analytics