小智 54

在更新现有的rails 3.0.8项目时,这对我有用.你的旅费可能会改变...

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

gem 'rails', '3.1.0.rc4’
Run Code Online (Sandbox Code Playgroud)

更新捆绑包:

bundle update
Run Code Online (Sandbox Code Playgroud)

然后使用rake命令更新项目:

rake rails:update
Run Code Online (Sandbox Code Playgroud)

樱桃采摘后,虽然变化冲突,我跑了所有的测试,他们通过(耶!).我重新启动了服务器,到目前为止一切似乎都很好.

但是,这还没有使用新的资产管道.我的意思是javascript和css(或sass)文件仍然以预管道方式处理.据我了解,这是一个非常可行的选择.但是,当然,我想要新的优点,所以我相信接下来的步骤是包含和其他宝石(例如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`. (5认同)

Jon*_* M. 28

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

gem 'rails', '3.1.0.rc1'
gem 'sqlite3'
gem 'sass'
gem 'coffee-script'
gem 'uglifier'
Run Code Online (Sandbox Code Playgroud)

我还在config/environments/development.rb中注释了以下行

# config.action_view.debug_rjs = true
Run Code Online (Sandbox Code Playgroud)

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

config.assets.enabled = true
Run Code Online (Sandbox Code Playgroud)

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

  • 我会注意到,对于`rc5`,Gemfile看起来有点不同; 它安装了`sass-rails`和`coffee-rails`,两个版本都是`3.1.0.rc1`,并将这些gems(以及`uglifier`)放在`group:assets do/end`块中.它有助于在另一个目录中生成一个新的边缘Rails站点,以查看它添加的内容. (3认同)

bor*_*r1s 24

升级到Rails 3.1

看它 :)

  • 是的...我看到了这个,但我的主要问题是如何将运行Rails 3的旧rails项目升级到Rails 3.1 (3认同)

Mar*_*sel 13

升级Rails

更新:请谨慎使用系统rake,因为rake已升级.

bundle exec rake
Run Code Online (Sandbox Code Playgroud)

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


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

一个例子

在将较旧的rails 2.3.4应用程序转换为3.0时,我在项目内一次更改一个文件时崩溃并烧毁.毋庸置疑,这是一个有缺陷的策略,但我确实在学习过程中学到了一些东西.我最终跳过3.0并使用新应用程序移至3.1beta1,并在获得正确的迁移后复制我的应用程序和公用文件夹.这一举动有几个突出的问题,最重要的是我没有使用rails edge来创建新的应用程序(感谢提示RubyInside).

首先将最新的导轨锁定在易于参考的位置:

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
Run Code Online (Sandbox Code Playgroud)

我有一个问题部署到Heroku,但是RadyRacer宝石帮助解决了这个问题.这是一个简单的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
Run Code Online (Sandbox Code Playgroud)

我怀疑会有社区工具来帮助您自动从旧版本的Rails迁移到--edge.

参考文献:

  1. 如何使用Rails 3.1,CoffeeScript和所有爵士乐现在
  2. Rails的四个骑士3.1beta,Coffee-Script,jQuery,SCSS和Assets
  3. Rails 3.1beta从你的iPhone部署到Heroku
  4. 可逆迁移


aba*_*ogh 1

如果我正确理解你的问题,这就是:

gem install rails --pre
Run Code Online (Sandbox Code Playgroud)