从Rails 2.0.2升级的提示

时间:2013-11-17 16:10:36

标签: ruby-on-rails

我试图破解一些开源rails应用程序,以了解如何在rails中构建一些不同的功能,特别是我想使用的是:

http://github.com/caffo/colorplan

但是,据我所知,自从rails 2.0.2以来,这还没有升级。我想将它升级到Rails 4.0.1以了解差异以及最终能够添加到应用程序。有没有一种简单的方法来升级这个应用程序,或者有人能指出我正确的方向来开始升级它?

1 个答案:

答案 0 :(得分:0)

哇,这是一个很大的问题。我没有在一个WHILE中从rails 2做过更新,所以这很有趣。这只会让你开始,你将有很长的路要走。

首先,创建一个新的rails 4应用程序。太多的框架已经改变,只需要几个小时或几天就可以到达应用程序启动的地方,更不用说工作了。因此,请创建一个新应用,然后复制原始应用的各个部分。

**使用全局别名完成git提交以使提交成为一个内容,您也可以使用:

git config --global alias.add-commit '!git add -A && git commit'

第1步 - 创建新应用:

rails new colorplanit4

第2步 - 设置一个git存储库,你需要进行间歇性提交:

cd colorplanit4
git init .
git add-commit -m "Init"

第3步 - cp迁移,app文件夹和运行db:migrate

cp -r ../colorplanit/db/migrate ./db/
rm -rf app
cp -r ../colorplanit/app .
bundle exec rake db:migrate
git add-commit -m "add init migrations & app"

第4步 - 更新路线 - 这可能需要调整,但从我看到的内容:

Colorplanit4::Application.routes.draw do
  match 'logout', to: 'session#destroy', via: :delete
  get 'login', to: 'session#new'
  match 'register', to: 'users#create', via: :post
  get 'signup', to: 'users#new'

  resources :users
  resource :session
  resources :projects do
    member do
      get :work
      get :pause
      get :importance
      get :archive
    end
    collection do
      get :archived
    end
  end

  resources :users, :sessions
  resource  :session, :controller => 'sessions'
  root to: "projects#index"
  match "about" => "main#about", via: :get
  match "status" => "main#status", via: :get

  get ':controller/:action/:id'
  get ':controller/:action/:id.:format'

end
git add-commit -m "updated routing table"

步骤5 - 将 projects_controller.rb中的before_filter替换为before_action

 before_action :login_required
 before_action :age, :only => [:index]·  

步骤6 - 将application.rb替换为新的application_controller.rb

 class ApplicationController < ActionController::Base
 end

这会将应用程序带到可以启动的地方。然后我将删除身份验证并用devise替换它(仅为了简单起见)

祝你好运