ちょっとしたプロトタイプを作ってみることに

しかも公開ベースで進めてみます。とりあえず rails new を。

$ rails new hoge

で、とりあえず何かの scaffold なソレが一つは必要らしい。
作っとくか。

$ rails generate scaffold Conn access_key:string secret_access_key:string end_point:string

げ、test_unit ができてます。とりあえずスルーの方向。
で、devise はバージョン縛り必要なのかな。最新 3.0.3 とか出ましたが。とりあえず以下を追加して

gem 'devise'

入れるか、と思ったのですが某所のマネをして Gemfile を以下なカンジに修正。

source 'https://rubygems.org'

gem 'rails', '3.2.13'
gem 'bootstrap-sass', '2.1'
gem 'devise'

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails', '2.11.0'
end

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails', '2.0.2'

group :production do
  gem 'pg', '0.12.2'
end

で、導入 kickoff します。

$ bundle install

何故か結構時間がかかっております。終わったら以下なのか。

$ rails generate devise:install
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here 
     is an example of default_url_options appropriate for a development environment 
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { :host => 'localhost:3000' }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root :to => "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

  4. If you are deploying on Heroku with Rails 3.2 only, you may want to set:

       config.assets.initialize_on_precompile = false

     On config/application.rb forcing your application to not access the DB
     or load models when precompiling your assets.

  5. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================

手動で云々、と言われてますね。
まず、config/environments/development.rb に云々とあります。これ、heroku 宛てに云々する場合は production.rb に、という理解で良いのかな。
次は config/routes.rb に云々とあります。わしは先程 ConnsController というコントローラクラスを追加しておりますので、以下になるのかな。

Shurijp::Application.routes.draw do
  root :to => "conns#index"
  resources :conns

次に app/views/layouts/application.html.erb について以下をよしなに、とあります。

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

で、Heroku に deploy する 3.2 なソレは云々とありますね。以下を config/application.rb のブロック末端に追加。

    config.assets.initialize_on_precompile = false
  end
end

で、最後に以下を実行、なのかどうか。

$ rails g devise:views
      invoke  Devise::Generators::SharedViewsGenerator
      create    app/views/devise/shared
      create    app/views/devise/shared/_links.erb
      invoke  form_for
      create    app/views/devise/confirmations
      create    app/views/devise/confirmations/new.html.erb
      create    app/views/devise/passwords
      create    app/views/devise/passwords/edit.html.erb
      create    app/views/devise/passwords/new.html.erb
      create    app/views/devise/registrations
      create    app/views/devise/registrations/edit.html.erb
      create    app/views/devise/registrations/new.html.erb
      create    app/views/devise/sessions
      create    app/views/devise/sessions/new.html.erb
      create    app/views/devise/unlocks
      create    app/views/devise/unlocks/new.html.erb
      invoke  erb
      create    app/views/devise/mailer
      create    app/views/devise/mailer/confirmation_instructions.html.erb
      create    app/views/devise/mailer/reset_password_instructions.html.erb
      create    app/views/devise/mailer/unlock_instructions.html.erb

あとは以下も、とのこと。

$ rake db:migrate
==  CreateConns: migrating ====================================================
-- create_table(:conns)
   -> 0.0035s
==  CreateConns: migrated (0.0036s) ===========================================

これで rails c から User.create して云々、とありますが production なナニではどうすりゃ良いのかな。とりあえず rails s して http://localhost:3000/users/sign_up にアクセスしてみます。
む、Routing Error と出ました。rake routes で確認してみるに users なナニが無いですね。何かスルーしているのかどうか。
あ、rails g devise User ってしてませんでした。間に合うのかな。

$ rails g devise user
      invoke  active_record
      create    db/migrate/20130831055327_devise_create_users.rb
      create    app/models/user.rb
      invoke    rspec
      create      spec/models/user_spec.rb
      insert    app/models/user.rb
       route  devise_for :users

で、もっかい migrate か。

$ rake db:migrate
=  DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
   -> 0.0316s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0008s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0005s
==  DeviseCreateUsers: migrated (0.0333s) =====================================

で、http://localhost:3000/users/sign_up にアクセスしたら Sign up なフォームが出ましたね。この時点でリポジトリを作って push しておくことに。

以降

以下なあたりでもごもごする方向。

  • Heroku にて云々とか
  • よく考えたら Conn なモデルは User に関連付けしなきゃいけなかった件orz
    • どうやってリカバしたものやら
  • Conn に登録されてる属性を使って某所に fog 使ってアクセスできるか確認
  • rspec な試験も云々

も少し時間があるはずなので、リカバな方法を云々してみます。

後から関連付け

これ、model なソースに belongs_to とか has_many とか付けといて user_id な属性を追加する migration を rails g あたりで云々したら良いのかどうか。
branch 作って盛り込んでみます。

と言いつつ

一旦離脱するのでここでエントリ投入。夜に続きに着手の方向にて。