如何从 Rails 3 升级到 Rails 3.1 beta?
如何从 Rails 3 升级到 Rails 3.1 beta?
这是我在更新现有的 rails 3.0.8 项目时使用的方法。具体效果因人而异...
将 Gemfile 中指定的 Rails 版本更新到最新的 release candidate:
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/
希望这有所帮助。
bundle update rails
命令。请注意,此命令不会更改其他 gem 的版本。 - Daniel X MooreNo route matches [GET] /assets/application.css
。 - Lasse Bunk我刚刚通过更改Gemfile文件将Rails版本从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
rc5
版本,Gemfile 文件有点不同;它安装了 sass-rails
和 coffee-rails
两个 gem 包,版本号都是 3.1.0.rc1
,然后将这些 gem 包(连同 uglifier
)放在一个 group :assets do/end
代码块中。为了查看添加的内容,可以在另一个目录中生成一个新的 edge Rails 站点。 - Ben Kreeger更新:小心使用系统自带的rake,因为rake已经升级。
bundle exec rake
该链接(来源)确保你在给定的Rails项目中使用正确的rake。
建议从一个新应用程序开始,然后在将资源转移到新的asset/sprockets格式时复制特定的应用程序信息。
一个例子
将一个旧的 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到最新版。
参考资料:
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'
如果我正确理解了你的问题,那么是这样的:
gem install rails --pre
rake rails:update
。 - Ninjaxor