【问题标题】:Upgrading from Rails 3 to Rails 3.1 [closed]从 Rails 3 升级到 Rails 3.1 [关闭]
【发布时间】:2011-05-11 17:23:17
【问题描述】:

如何从 Rails 3 升级到 Rails 3.1 beta?

【问题讨论】:

  • 我在@user730569下面给出了一些例子。我正在将 rails 2.3.4 应用程序迁移到 3.1 beta
  • 刚刚将我的应用从 3 更新到 3.1 - 记录了它here
  • 这个问题也适用于 rails 3.0 到 rails 3.1,感谢提问。在我用谷歌搜索到这里之前,我不知道rake rails:update。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1


【解决方案1】:

在更新现有的 rails 3.0.8 项目时,这对我有用。您的里程可能会有所不同...

更新我的 Gemfile 中指定的 rails 版本以使用最新的候选版本:

gem 'rails', '3.1.0.rc4’

更新捆绑包:

bundle update

然后用 rake 命令更新项目:

rake rails:update

虽然更改冲突,但在挑选樱桃之后,我运行了所有测试,并且它们通过了(耶!)。我重新启动了服务器,到目前为止一切似乎都很好。

但是,这还没有使用新的资产管道。我的意思是 javascript 和 css(或 sass)文件仍在以流水线前的方式处理。据我了解,这是一个完全可行的选择。但当然,我想要新的好处,所以我相信接下来的步骤是包含和其他 gem(例如,coffeescript、sass、uglifier 等),然后将旧文件迁移到 app/assets 目录。

我在这里找到了一些细节:

http://blog.nodeta.com/2011/06/14/rails-3-1-asset-pipeline-in-the-real-world/

希望对您有所帮助。

【讨论】:

  • 如果您只想更新包中特定于 Rails 的 gem,可以使用 bundle update rails。
  • 工作就像一个魅力!但是,在启用资产的情况下运行时,出现以下错误:No route matches [GET] /assets/application.css
【解决方案2】:

我刚刚通过将我的 Gemfile 更改为:从 3.0 升级到 3.1:

gem 'rails', '3.1.0.rc1'
gem 'sqlite3'
gem 'sass'
gem 'coffee-script'
gem 'uglifier'

我还在 config/environments/development.rb 中注释掉了下面一行

# config.action_view.debug_rjs = true

最后,确保在 config/application.rb 中启用资产管道

config.assets.enabled = true

我不确定你是否已经阅读了发行说明http://weblog.rubyonrails.org/2011/4/21/jquery-new-default

【讨论】:

  • 那一个是唯一真正回答的。 railscasts 剧集很棒,但没有说明如何迁移。
  • 我会注意到,对于rc5,Gemfile 看起来有点不同;它安装sass-rails 和coffee-rails,两个版本3.1.0.rc1,并将这些宝石(连同uglifier)放在group :assets do/end 块中。它有助于在另一个目录中生成一个新的边缘 Rails 站点以查看它添加的内容。
【解决方案3】:

【讨论】:

  • 这会覆盖旧的 Rails 项目吗?
  • 我认为你不能更新旧项目,你应该生成新的
  • Railscasts 是获取 Rails 信息的最佳网站之一,感谢 Ryan Bates!
  • 是的...我看到了这个,但我的主要问题实际上是如何将运行 Rails 3 的旧 Rails 项目升级到 Rails 3.1
  • 关于您的问题的更多详细信息在这种情况下可能会有所帮助。
【解决方案4】:

升级 Rails

更新:谨慎使用您的系统 rake,因为 rake 已升级。

bundle exec rake

确保您将为给定的 rails 项目使用正确的 rake (source)


我建议从一个新应用开始,然后复制您的特定应用信息,同时将您的资源转换为新的资产/链轮格式。

一个例子

在转换旧 Rails 2.3.4 时 应用到 3.0 我崩溃并烧毁了 一次更改一个文件 项目内。不用说 这是一个有缺陷的策略,但我做到了 一路上学一点。我结束了 向上跳过 3.0 并移至 3.1beta1 用一个新的应用程序,并复制了我的应用程序 和公用文件夹在得到后 迁移权。这一举动有 几个悬而未决的问题,最 重要的是我没有使用 用于创建新应用的 rails edge (感谢 RubyInside 的提示)。

首先将最新的 rails 插入 易于参考的位置:

cd ~/goodtimes

git clone https://github.com/rails/rails.git

我的路径包括一个 ~/Desktop/Dropbox/ 所以我的代码无处不在。

然后参考那个rails exec 构建一个新应用:

~/goodtimes/rails/bin/rails new bacon --edge

根据数据库的复杂性,您可能希望使用更改语法创建新的迁移,或者保留它们:

 class CreatePosts < ActiveRecord::Migration
    def change
      create_table :posts do |t|
        t.string :title
        t.text :body

        t.timestamps
      end
    end
  end

我在部署到 Heroku 时遇到了问题,但 RubyRacer gem 帮助解决了这个问题。下面是一个简单的 Gem 文件示例:

source 'http://rubygems.org'

gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

# Asset template engines
gem 'sass'
gem 'coffee-script'
gem 'uglifier'

gem 'jquery-rails'
gem 'pg'
gem 'therubyracer-heroku', '0.8.1.pre3', :platforms => :ruby

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

group :test do
  # Pretty printed test output
  gem 'turn', :require => false
end

我怀疑会有社区实用程序来帮助您自动从旧版本的 Rails 迁移到 --edge。

参考资料:

  1. How to Play with Rails 3.1, CoffeeScript and All That Jazz Right Now
  2. The Four Horsemen of Rails 3.1beta, Coffee-Script, jQuery, SCSS and Assets
  3. Rails 3.1beta deployed to Heroku from your iPhone
  4. Reversible Migrations

【讨论】:

    【解决方案5】:

    我建议更新您的 Gemfile 以使用边缘导轨。例如:

    gem 'rails',     :git => 'git://github.com/rails/rails.git'
    gem 'arel',      :git => 'git://github.com/rails/arel.git'
    gem 'rack',      :git => 'git://github.com/rack/rack.git'
    gem 'sprockets', :git => 'git://github.com/sstephenson/sprockets.git'
    
    gem 'sqlite3'
    
    # Asset template engines
    gem 'sass', '~> 3.1.0.alpha'
    gem 'coffee-script'
    gem 'uglifier'
    

    你可以在这里http://pogodan.com/blog/2011/04/24/easy-edge-rails阅读更多内容。

    【讨论】:

    【解决方案6】:

    http://railscasts.com/episodes/282-upgrading-to-rails-3-1

    这个 railscast 可能会有所帮助!

    【讨论】:

      【解决方案7】:

      如果我正确理解了您的问题,方法如下:

      gem install rails --pre
      

      【讨论】:

        【解决方案8】:

        这是一个很好的指南,详细介绍了安装 Rails 3.1:

        http://railsapps.github.com/installing-rails-3-1.html

        【讨论】:

          【解决方案9】:

          使用本指南升级 rails 3.0.7 和 3.0.9 应用程序对我有用

          http://davidjrice.co.uk/2011/05/25/how-to-upgrade-a-rails-application-to-version-3-1-0.html

          如果您愿意,您可以跳过第 3 步及更高的步骤 - 它仍然可以工作,尽管您不会利用 rails 3.1 中的所有新功能。

          【讨论】:

            猜你喜欢
            • 2014-04-24
            • 1970-01-01
            • 1970-01-01
            • 2013-01-14
            • 1970-01-01
            • 1970-01-01
            • 2019-06-18
            • 2012-06-19
            • 1970-01-01
            相关资源
            最近更新 更多