天道酬勤,学无止境

Freezing Rails gem versions

I am trying to freeze my Rails gem version as, day by day, some or the other gem version gets updated and sometimes I need to update the code.

I tried rake rails:freeze:gems but this gave me error:

rake aborted!
Don't know how to build task 'rails:freeze:gems'

评论

rake rails:freeze:gems is an old Rails 2 way of doing it. I think you want to use Bundler's bundle install vendor/gems

"How do I freeze gems into a Rails 3 application?" seem to answer it better.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • What's the point of freezing your Rails version/gems?
    What does that mean? In the instructions for a project, it said to "freeze the Rails gems". Is that different from freezing the Rails version? What's freezing about?
  • 使用Rails 2.3.5绕过机架版本错误(Bypassing rack version error using Rails 2.3.5)
    问题 我目前在Dreamhost上尝试运行Rails 2.3.5应用程序。 在这种情况下,Dreamhost的服务器已安装Rails 2.2.2。 当然,我无法更新共享主机的Rails版本,因此我冻结了供应商中的Rails。 Rails 2.3.5需要使用机架v1.0.1 gem。 Dreamhost使用机架v1.0.0 gem。 所以当我尝试定义: config.gem "rack", :version => "1.0.1" 我得到: can't activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for [] 因此,我真正需要做的是绕过我的应用程序使用1.0.1的请求,并使用Dreamhost的1.0.0。 有人知道如何配置吗? 可能吗? 谢谢您的帮助。 回答1 您几乎总是希望将应用程序依赖的gem打包到vendor文件夹中。 您可以使用以下rake命令来做到这一点: rake gems:unpack:dependencies 这将在应用程序的根文件夹下创建一个文件夹vendor/gems ,并将您使用config.gem命令声明的所有gem解压缩到其中。 这不仅可以解决rack版本不匹配的问题,而且还可以确保在生产中使用的宝石版本与在开发中使用的宝石版本完全相同
  • Mongoid 4 / MongoDB 2.4+ “Freezing” Issue
    I've had a strange issue since with maintaining a connection to mongodb using Mongoid. I thought this was originally due to upgrading to Rails 4.0+ (which required Mongoid/Moped to be updated), but I've also had this issue with other Rack-based apps (Sinatra and Grape to be specific). We updated our mongodb instance from 2.4 to 2.6 after the stable was released, but this issue was present on 2.4 as well. I wrote this up in an issue on Github (https://github.com/mongoid/moped/issues/274) but I'll copy it here as well as I'm not getting any traction there. The TL;DR version is that my apps will
  • Mongoid 4 / MongoDB 2.4+ “冻结”问题(Mongoid 4 / MongoDB 2.4+ “Freezing” Issue)
    问题 自从使用 Mongoid 保持与 mongodb 的连接以来,我遇到了一个奇怪的问题。 我认为这最初是由于升级到 Rails 4.0+(需要更新 Mongoid/Moped),但我也遇到了其他基于 Rack 的应用程序(具体来说是 Sinatra 和 Grape)的问题。 在稳定版发布后,我们将 mongodb 实例从 2.4 更新到 2.6,但这个问题在 2.4 上也存在。 我在 Github (https://github.com/mongoid/moped/issues/274) 上的一个问题中写了这个,但我会在这里复制它,因为我在那里没有任何吸引力。 TL;DR 版本是我的应用程序在尝试使用 Mongoid 执行查询时会随机挂起。 无论我是使用 Rails 控制台还是应用程序正在运行(或部署),都会发生这种情况。 如果我在控制台中,按 CTRL+C 然后重试请求总是有效的,所以我怀疑这是某种连接问题。 我的 mongoid 配置类似于以下内容: mongoid.yml default: &default sessions: default: uri: "mongodb://localhost:27017/database" options: timeout: 15 retry_interval: 1 max_retries: 5 pool_size: 10
  • Gemfile.lock 未签入 - Heroku(Gemfile.lock not checked in - Heroku)
    问题 在尝试“git push heroku master”时,我不断收到错误消息: Counting objects: 266, done. Delta compression using up to 4 threads. Compressing objects: 100% (239/239), done. Writing objects: 100% (266/266), 222.68 KiB, done. Total 266 (delta 55), reused 0 (delta 0) -----> Heroku receiving push -----> Rails app detected -----> Detected Rails is not set to serve static_assets Installing rails3_serve_static_assets... done -----> Gemfile detected, running Bundler version 1.0.3 Unresolved dependencies detected; Installing... Using --without development:test You have modified your Gemfile in development but did not
  • 如何将宝石冻结到Rails 3应用程序中?(How do I freeze gems into a Rails 3 application?)
    问题 我想将特定的宝石冻结到我的Rails应用程序中。 在rails 2中有以下命令: rake gems:unpack 我在Rails 3中找不到该命令。 回答1 我还没有这样做,但是我相信这一切都是由bundler处理的。 创建新的rails3应用程序时,rails依赖项将放入Gemfile 。 您可以运行bundle install来安装它们。 默认情况下,它们安装在您的BUNDLE_PATH 。 如果要在应用程序中安装它们,则可以指定位置: bundle install vendor/gems 。 回答2 因此,简短的答案是,您不会。 当您修改Gemfile并运行bundle install或bundle update ,bundler会为您处理依赖项解析,并确定您需要的每个gem的最佳(最新)版本,该版本满足整个依赖项链(您不会获得新版本,它会破坏依赖项列表中的另一个gem,等等。 当然,您也可以使用config.gem时代的熟悉语法在Gemfile中放置特定版本或'> = 1.2.3'规范或您拥有的文件,bundler也将确保也满足此要求(否则将不会)如果没有有效的分辨率,则生成Gemfile.lock)。 当Bundler开展业务时,它会创建Gemfile.lock文件(该文件由您单独使用捆绑程序来管理所有工作站/环境/部署上的gem
  • Gemfile.lock not checked in - Heroku
    While trying to "git push heroku master", I keep getting the error : Counting objects: 266, done. Delta compression using up to 4 threads. Compressing objects: 100% (239/239), done. Writing objects: 100% (266/266), 222.68 KiB, done. Total 266 (delta 55), reused 0 (delta 0) -----> Heroku receiving push -----> Rails app detected -----> Detected Rails is not set to serve static_assets Installing rails3_serve_static_assets... done -----> Gemfile detected, running Bundler version 1.0.3 Unresolved dependencies detected; Installing... Using --without development:test You have modified your Gemfile in
  • Django equivalent to “rake rails:freeze:gems” and “rake gems:unpack”
    Is there and equivalent in Django to Rails' freezing and unpacking mechanism to a vendor directory so that an application becomes self-contained?
  • Django 相当于“rake rails:freeze:gems”和“rake gems:unpack”(Django equivalent to “rake rails:freeze:gems” and “rake gems:unpack”)
    问题 在 Django 中是否存在与 Rails 的冻结和解包机制等价于供应商目录,以便应用程序成为自包含的? 回答1 是的。 pip bundle 打算达到同样的目的。 http://pip.openplans.org/#bundles
  • Rails 3 的 Bundler “bundle install --deployment”究竟是做什么的?(What does Rails 3's Bundler “bundle install --deployment” exactly do?)
    问题 正式文档中描述的东西有点复杂。 它是否只是.bundle/config下行添加到.bundle/config BUNDLE_PATH: vendor/bundle 然后执行bundle install ,就这样? (然后安装会将所有 gem 安装到vendor/bundle ) 然后当应用程序运行时,它会在.bundle/config指定的这个路径中寻找 gems,就这样? Update:如果我使用 Mercurial(类似于 Git)来跟踪项目中的文件,那么在执行bundle install --deployment ,唯一的变化是将大量文件添加到供应商/捆绑包中,并将 2 行添加到.bundle/config : BUNDLE_FROZEN: "1" BUNDLE_PATH: vendor/bundle 回答1 bundle install --deployment确实将 gems 本地安装到应用程序的vendor/bundle目录中。 这反映在您提到的路径设置中的配置更改(BUNDLE_PATH:供应商/捆绑包)。 这种方法被称为“冻结”或“出售”gem,它强制应用程序使用本地安装的gem,而不是全局系统gem,这是部署的方便默认值。 如捆绑器文档中所述: “在部署中,隔离是一个更重要的默认设置。此外,部署应用程序的用户可能没有权限将 gems 安装到系统,或者 web
  • Faraday timeout error with omniauth (custom strategy)/doorkeeper
    I'm currently following along with this railscast and for my specific situation am running into a Faraday timeout error on the callback from omniauth. Currently I'm using a rails application as an API and backbone as a javascript front-end (on the same application) I decided I wanted to lock down the API with OAuth and provided a custom strategy for Omniauth to access the API as a client as well as Doorkeeper to handle the authorization logic module OmniAuth module Strategies class Twiddle < OmniAuth::Strategies::OAuth2 option :name, :twiddle option :client_options, { site: "http://localhost
  • 更改 rails text_field 表单构建器类型(Change rails text_field form builder type)
    问题 我一直在研究 HTML5 表单中可用的新选项,例如将输入类型声明为“email”、“url”和“number”,如此处所述。 我如何将这些与 rails 表单构建器结合使用? 我试过了 <% form_for @user do |f| %> <%= f.email :email, {:placeholder => 'user@domain.com'} %> <% end %> 但这不起作用。 我也试过 <% form_for @user do |f| %> <%= f.text_field :email, {:placeholder => 'user@domain.com', :type => :email} %> <% end %> 但是类型仍然是“文本”并且没有被覆盖。 是否有可能,或者这是否需要在 Rails 本身中解决? 回答1 现在有一个 email_field 标签。 回答2 看起来目前有一个用于添加 HTML5 表单输入类型的开放式票证和补丁。 如果您不能等到补丁被接受,您可以通过冻结 actionpack gems 并应用补丁或制作添加额外方法的初始化程序在本地应用补丁。 当然,另一个选项是在没有表单助手的情况下手动添加字段: <% form_for @user do |f| %> <%= tag(:input, {:type => :email,
  • 使用omniauth(自定义策略)/门卫的法拉第超时错误(Faraday timeout error with omniauth (custom strategy)/doorkeeper)
    问题 我目前正在跟踪该轨道广播,对于我的特定情况,在omniauth的回调中遇到了法拉第超时错误。 目前,我正在将Rails应用程序用作API,并将主干网用作javascript前端(在同一应用程序上) 我决定要使用OAuth锁定API,并为Omniauth提供了一种自定义策略,以使其可以作为客户端访问API以及通过门卫来处理授权逻辑 module OmniAuth module Strategies class Twiddle < OmniAuth::Strategies::OAuth2 option :name, :twiddle option :client_options, { site: "http://localhost:3001", authorize_path: "/oauth/authorize" } uid do raw_info["id"] end info do { firstName: raw_info["firstName"], lastName: raw_info["lastName"], email: raw_info["email"] } end def raw_info @raw_info ||= access_token.get('/api/v1/user').parsed end end end end 我包括了这样的自定义策略:
  • Sinatra on Passenger 总是在第一次尝试时失败(Sinatra on Passenger always fails on first attempt)
    问题 我有一个小型 Sinatra 应用程序,正在使用 Passenger 的共享主机帐户上运行。 但是,一段时间后第一次访问该应用程序时,我收到一个乘客错误页面,指出该应用程序无法启动。 通常是因为找不到 Sinatra。 我假设这只是产生新实例后的正常延迟。 但是,有没有办法延迟尝试加载 Siantra 直到其乘客完全加载? 回答1 我似乎通过在 .htaccess 文件中设置GEMS_PATH环境变量解决了这个问题。 我没有再次遇到错误。 然而! 回答2 我最近接受了 Dreamhost 支持(不是很好的体验),最终他们建议将 gem 冻结到应用程序中。 这充其量只是部分解决方案,因为它似乎适用于某些 gem 而不适用于其他 gem。 代替 require 'sinatra' 我有: require 'vendor/gems/sinatra-0.9.4/lib/sinatra' 冷冻宝石在其他地方有介绍,但简单地说:为此做准备,需要做 mkdir vendor/gems cd vendor/gems gem unpack sinatra 由于此更改,我永远不会看到启动失败屏幕将 sinatra 引用为无法加载的文件。 但是,我仍然为其他一些需要它们自己或其他 gem 的部分的 gem 获取它。 不太清楚细节,但我正在研究破解已安装的 gem 以使每个“需要”使用直接从我的
  • uninitialized constant ActionDispatch::Session::EncryptedCookieStore (NameError)
    i'm on rails 4 with passenger. everything was working great until i did a bundle just now. now i'm hitting the following error: Web application could not be started uninitialized constant ActionDispatch::Session::EncryptedCookieStore (NameError) /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/configuration.rb:144:in `const_get' /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/configuration.rb:144:in `session_store' /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib
  • 未初始化的常量 ActionDispatch::Session::EncryptedCookieStore (NameError)(uninitialized constant ActionDispatch::Session::EncryptedCookieStore (NameError))
    问题 我和乘客在 4 号轨道上。 一切都很好,直到我刚刚做了一个bundle 。 现在我遇到以下错误: Web application could not be started uninitialized constant ActionDispatch::Session::EncryptedCookieStore (NameError) /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/configuration.rb:144:in `const_get' /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/configuration.rb:144:in `session_store' /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application
  • Bundler找不到Rails 4.0.0的gem“ railties”的兼容版本(Bundler could not find compatible versions for gem “railties” for Rails 4.0.0)
    问题 我试图升级到Rails 4.0.0,并更改了sass-rails和coffee-rails的gem版本。 在升级到Rails 4之前,我需要解决rails和coffee-rails之间的这种宝石冲突。 当我运行bundle update这是我得到的输出: $ bundle update Updating git://github.com/pilu/web-app-theme.git Fetching source index from https://rubygems.org/ Resolving dependencies.............. Bundler could not find compatible versions for gem "railties": In Gemfile: rails (= 4.0.0) ruby depends on railties (= 4.0.0) ruby coffee-rails (= 4.0.0) ruby depends on railties (4.0.0.rc2) 我的Gemfile : source 'https://rubygems.org' gem 'rails', '4.0.0' gem 'cancan' gem 'client_side_validations' gem 'devise', '~> 1.5
  • Ruby On Rails,运行命令“rails generate controller”时出错,输入/输出错误@rb_sysopen,(Errno::EIO)(Ruby On Rails, Error running command "rails generate controller", Input/output error @ rb_sysopen, (Errno::EIO))
    问题 一开始,当我在我的项目目录中运行rails generate controller welcome homepage ,命令运行正常并生成app/controllers/welcome_controller.rb和 route app/controllers/welcome_controller.rb get welcome/homepage User1@My-Machine:~/MyProject$ rails generate controller welcome homepage /home/User1/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-4.2.6/lib/rails/app_rails_loader.rb:39: warning: Insecure world writable dir /home/User1/.rbenv/versions in PATH, mode 040777 create app/controllers/welcome_controller.rb route get 'welcome/homepage' 紧接着,该命令遇到以下错误: /home/User1/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19
  • Ruby On Rails, Error running command "rails generate controller", Input/output error @ rb_sysopen, (Errno::EIO)
    In the beginning, when I run rails generate controller welcome homepage into my project's dir, the command works OK and produces the app/controllers/welcome_controller.rb and route get welcome/homepage User1@My-Machine:~/MyProject$ rails generate controller welcome homepage /home/User1/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-4.2.6/lib/rails/app_rails_loader.rb:39: warning: Insecure world writable dir /home/User1/.rbenv/versions in PATH, mode 040777 create app/controllers/welcome_controller.rb route get 'welcome/homepage' immediately after that, the command runs into the
  • 无法编辑 Rails 凭据 Rails 5.2(Cannot edit rails credentials Rails 5.2)
    问题 我正在开发 Rails 5.2 应用程序,并且已经安装并设置了 active_storage,但是,我似乎无法编辑或显示 rails 凭据。 这是错误的输出 ben@ben-VirtualBox:~/Desktop/benbagley$ EDITOR="atom --wait" rails credentials:edit Traceback (most recent call last): 38: from bin/rails:3:in `<main>' 37: from bin/rails:3:in `load' 36: from /home/ben/Desktop/benbagley/bin/spring:15:in `<top (required)>' 35: from /home/ben/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:70:in `require' 34: from /home/ben/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:70:in `require' 33: from /home/ben/.rbenv/versions/2.5.0/lib