This is what worked for me when updating an existing rails 3.0.8 project. Your mileage may vary...
Update the rails version specified in my Gemfile to use the latest release candidate:
gem 'rails', '3.1.0.rc4’
Update the bundle:
bundle update
Then update the project with the rake command:
rake rails:update
After cherry picking though the change conflicts I ran all my tests and they passed (yay!). I restarted the server and everything seems good so far.
However, this is not using the new asset pipeline yet. By that I mean the javascript and css (or sass) files are still being handled in the pre-pipeline manner. As I understand it, this is a perfectly viable option. But of course, I want the new goodness, so I believe the next steps are to include and additional gems (e.g. coffeescript, sass, uglifier, etc) and then to migrate the old files to the app/assets directory.
Update: be cautious of using your system rake, as rake has been upgraded.
bundle exec rake
ensures you'll be using the correct rake for a given rails project (source)
I suggest beginning with a fresh app, then copying in your specific app information while shifting your resources into the new asset/sprockets format.
An example
While converting an older rails 2.3.4 app to 3.0 I crashed and burned while changing one file at a time over within the project. Needless to say that was a flawed strategy, but I did learn a little along the way. I ended up skipping 3.0 and moving to 3.1beta1 with a fresh app, and copied my app and public folders in after getting the migrations right. That move had a couple of outstanding issues, the most important being that I didn’t use rails edge for creating the new app (thanks for the tip RubyInside).
First snag the latest rails into an easy to reference location:
cd ~/goodtimes
git clone https://github.com/rails/rails.git
My path includes a ~/Desktop/Dropbox/ so my code is available everywhere.
Then refer to that rails exec for building a new app:
~/goodtimes/rails/bin/rails new bacon --edge
Depending on the complexity of your database, you'll either want to create new migrations using the change syntax or leave them be:
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :title
t.text :body
t.timestamps
end
end
end
I had an issue deploying to Heroku, but theRubyRacer gem helped square that away. Here's an example of a simple Gem file:
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
I suspect there will be community utilities to help you automate migration from older versions of Rails to the --edge.
发布评论
评论(5)
这就是在更新现有的 Rails 3.0.8 项目时对我有用的方法。您的情况可能会有所不同...
更新我的 Gemfile 中指定的 Rails 版本以使用最新的候选版本:
更新捆绑包:
然后使用 rake 命令更新项目:
在挑选变更冲突后,我运行了所有测试并且它们通过了(耶!)。我重新启动了服务器,到目前为止一切似乎都很好。
然而,这还没有使用新的资产管道。我的意思是 javascript 和 css(或 sass)文件仍然以预管道方式处理。据我了解,这是一个完全可行的选择。但当然,我想要新的优点,所以我相信接下来的步骤是包含额外的 gems(例如 Coffeescript、sass、uglifier 等),然后将旧文件迁移到 app/assets 目录。
我在这里找到了一些详细信息:
http://blog.nodeta.com/2011/06/14/rails-3-1-asset-pipeline-in-the-real-world/
希望有帮助。
This is what worked for me when updating an existing rails 3.0.8 project. Your mileage may vary...
Update the rails version specified in my Gemfile to use the latest release candidate:
Update the bundle:
Then update the project with the rake command:
After cherry picking though the change conflicts I ran all my tests and they passed (yay!). I restarted the server and everything seems good so far.
However, this is not using the new asset pipeline yet. By that I mean the javascript and css (or sass) files are still being handled in the pre-pipeline manner. As I understand it, this is a perfectly viable option. But of course, I want the new goodness, so I believe the next steps are to include and additional gems (e.g. coffeescript, sass, uglifier, etc) and then to migrate the old files to the app/assets directory.
I found some details about that are here:
http://blog.nodeta.com/2011/06/14/rails-3-1-asset-pipeline-in-the-real-world/
Hope that was helpful.
我刚刚从 3.0 升级到 3.1,将 Gemfile 更改为:
我还在 config/environments/development.rb 中注释掉了以下行
最后,请确保在 config/application.rb 中启用资产管道
我不确定是否您已经阅读了发行说明 http://weblog.rubyonrails.org/2011/4/21/jquery-new-default
I just upgraded from 3.0 to 3.1 by changing my Gemfile to:
I also commented out the following line below in config/environments/development.rb
Finally, make sure you enable the asset pipeline in config/application.rb
I'm not sure if you've already read the release notes http://weblog.rubyonrails.org/2011/4/21/jquery-new-default
升级 Rails
更新:请谨慎使用系统 rake,因为 rake 已升级。
确保您将为给定的 Rails 项目使用正确的 Rake(源)
我建议从一个新的应用程序开始,然后复制您的特定应用程序信息,同时将您的资源转换为新的资产/链轮格式。
根据数据库的复杂性,您要么想要使用更改语法创建新的迁移,要么保留它们是:
我在部署到 Heroku 时遇到了问题,但是 RubyRacer gem 帮助解决了这个问题。这是一个简单的 Gem 文件的示例:
我怀疑会有社区实用程序来帮助您自动从旧版本的 Rails 迁移到 --edge。
参考资料:
Upgrading Rails
Update: be cautious of using your system rake, as rake has been upgraded.
ensures you'll be using the correct rake for a given rails project (source)
I suggest beginning with a fresh app, then copying in your specific app information while shifting your resources into the new asset/sprockets format.
Depending on the complexity of your database, you'll either want to create new migrations using the change syntax or leave them be:
I had an issue deploying to Heroku, but theRubyRacer gem helped square that away. Here's an example of a simple Gem file:
I suspect there will be community utilities to help you automate migration from older versions of Rails to the --edge.
References:
我建议更新您的 Gemfile 以使用边缘导轨。例如:
您可以在此处阅读更多信息 http://pogodan.com/blog /2011/04/24/easy-edge-rails。
I recommend updating your Gemfile to use edge rails. For example:
You can read more here http://pogodan.com/blog/2011/04/24/easy-edge-rails.
如果我正确理解你的问题,这就是:
If i understood your question correctly this is how: