【问题标题】:Rails - different versions on my machineRails - 我机器上的不同版本
【发布时间】:2009-11-12 05:42:40
【问题描述】:

我想知道 Rails 版本。

我在一个项目目录中:

  • 当我运行“rails --version”时,我得到了 v2.3.4。
  • 当我运行“script/about”时,我得到了不同的答案,v2.1.1。
  • 在 environment.rb 中,我有一行“RAILS_GEM_VERSION = '2.1.1' ....”

好的,那么这个 rails v2.1.1 在哪里?我想也许在供应商中,但不,应该有吗?我知道我安装的 (v2.3.4.) rails 位于 /usr/bin/rails。

有人帮我解决这个问题吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    有几种可能。

    ./config/environment.rb 有一个常量 RAILS_GEM_VERSION 除非您覆盖该值,否则它通常会指示您的应用程序是使用哪个版本的 Rails 构建的。当您运行 script/about 时,该常量值应默认显示。

    gem list rails 将显示本地安装的版本,并且您可以在任何给定时间拥有多个版本。

    最后,Rails 应用程序可以“冻结”当前版本的 rails,以便他们可以通过执行为他们的应用程序使用正确版本的 rails 库

    rake rails:freeze:gems
    

    你可以通过运行来撤销它

    rake rails:unfreeze
    

    您也可以通过输入rake rails:update 来更新配置,或使用rake rails:freeze:edge RELEASE=2.2.2 冻结到特定版本。

    【讨论】:

    • 奇怪,我的虚拟主机 linux 可能有点笨拙。由于似乎没有 v2.1.1。我做了“gem install -v=2.1.1 rails”并将其安装在 ./ruby/gems/gems/rails-2.1.1 中。我注意到附近还有 2 个其他版本。运行“gem list rails”仍然只显示 v2.3.4。由于我的应用程序仍然无法运行,我正朝着更加心痛的方向前进。 :(
    • 我认为您应该尝试 rake rails:freeze:edge RELEASE=2.1.1 以运行现有代码,然后根据已弃用或更改的功能测试您的应用程序的哪些部分。 (尽管有 :edge 标记,大多数版本都可以冻结。)
    【解决方案2】:

    Rails 是一个 ruby​​ gem - 您可以通过gem list rails 查看所有已安装的版本。它应该安装在你的 gems 目录中。

    【讨论】:

      【解决方案3】:

      /usr/bin/rails 是安装的 rails 版本的项目创建脚本的包装器。它只是一个可执行的 ruby​​ 脚本,它使用 Ruby Gems 来选择正确的 rails 版本。

      rails gem 的安装位置取决于 gem 的安装位置。

      要找出 gem 的存储位置,请运行以下 ruby​​ 语句。在 irb 中或作为可执行脚本。

      require 'rubygems'
      puts Gem.path.join("\n")
      

      它应该至少打印出两个目录。您的主文件夹中的一个本地目录用于安装没有管理员权限的 gems,一个用于安装有管理员权限的 gems 的全局目录。您的 rails gem 将位于其中一个文件夹中。

      在我的系统上,这会输出 /usr/lib/ruby/gems/1.8 和 ~/.gem/ruby/1.8

      【讨论】:

      • 你也可以运行'gem env'来查看gem的存储位置
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多