rails2.3.5 devise bundler install

使用bundler在rails2.3.5项目中安装devise.

我的环境参数:

ruby 1.8.7-head
rails 2.3.5

STEP1 生成一个Rails2.3.5项目,名为blog

rails blog -d mysql

STEP2 安装和配置bundler
Bundler是rails3默认的gem包依赖管理工具,没有它真的很不方便,rails2.3.5也可以使用,官方安装说明.

首先:

gem install bundler

然后在刚刚生成的blog项目的config/boot.rb文件的最后加上如下的代码:

class Rails::Boot
  def run
    load_initializer

    Rails::Initializer.class_eval do
      def load_gems
        @bundler_loaded ||= Bundler.require :default, Rails.env
      end
    end

    Rails::Initializer.run(:set_load_path)
  end
end

接着在config目录下新建一个文件叫preinitializer.rb,写入下面的代码:

begin
  require "rubygems"
  require "bundler"
rescue LoadError
  raise "Could not load the bundler gem. Install it with `gem install bundler`."
end

if Gem::Version.new(Bundler::VERSION) < = Gem::Version.new("0.9.24")
  raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
   "Run `gem install bundler` to upgrade."
end

begin
  # Set up load paths for all bundled gems
  ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
  Bundler.setup
rescue Bundler::GemNotFound
  raise RuntimeError, "Bundler couldn't find some gems." +
    "Did you run `bundle install`?"
end

最后在blog的根目录下创建文件Gemfile,如果是windows平台注意没有后缀名。这样我们就可以在rails2.3.5项目中使用bundler了.

STEP3 安装devise
有了第二步安装的bundler,就简单多了.
在刚刚新建的Gemfile文件中加入devise,代码如下:

source :gemcutter

gem "rails", "2.3.5"
gem "devise", "1.0.10"
gem "mysql"

在blog根目录下运行命令:

bundle install

STEP4 简单使用devise
先记得在config/database.yml中配置好数据库.
运行命令建立数据库:

rake db:create RAILS_ENV=development

在blog根目录下运行命令:

ruby script/generate devise_install

接着新建User用户,还是在blog根目录下运行:

ruby script/generate devise User

接着:

rake db:migrate

ok。到目前为止,devise已经安装配置好了,下面测试下是否成功。

STEP5 测试devise
我们的blog需要一个首页用来展示。
先删除public目录下的index.html文件。
运行命令,新建一个controller:

ruby script/generate controller homepage index

配置路由,在config/routes.rb中加入:

map.root :controller => "homepage"

在views/homepage/index.html.erb中加入:

<ul class="hmenu">
  < % if user_signed_in? %>
    <li>
    < %= link_to('Logout', destroy_user_session_path, :method => 'delete') %>        
    </li>
  < % else %>
    <li>
    < %= link_to('Login', new_user_session_path)  %>  
    </li>
  < % end %>
  < % if user_signed_in? %>
    <li>
    < %= link_to('Edit registration', edit_user_registration_path) %>
    </li>
  < % else %>
    <li>
    < %= link_to('Register', new_user_registration_path)  %>
    </li>
  < % end %>
</ul>

最后启动服务:

ruby script/server

ok!到这里应该就可以看见首页上有登录和注册的链接了。