myTaskの最近のブログ記事

#6 ActionMailで会員登録時にメール送信する

   ブックマークに追加する
会員登録時にメールを送信し、クリック後会員登録完了とすることで
メールアドレスのチェックをおこなう。
railsではActionMailerという仕組みにより、簡単にテンプレートメールを送信できます。
以下5つのSTEPで実装できます。


1) Rails環境ファイルにメールサーバを設定
以下environment.rbファイルにメールサーバの設定をする
- mytask/config/environment.rbに以下追加(下線部は環境によって変更する)

    # Include your application configuration below
    ActionMailer::Base.delivery_method = :smtp
    ActionMailer::Base.server_settings = {
      :address  => "address",
      :port  => 25,
      :domain  => 'domain',
      :user_name  => 'user_name',
      :password  => 'password',
      :authentication  => :login
        }

2) generateを使ってActionMailerを作成する
モデルとして作成されるので注意する。テンプレートファイルはviewファイルとして生成される

    $ ruby script/generate mailer AccountMailer sent
          exists  app/models/
          create  app/views/account_mailer
          exists  test/unit/
          create  test/fixtures/account_mailer
          create  app/models/account_mailer.rb
          create  test/unit/account_mailer_test.rb
          create  app/views/account_mailer/sent.rhtml
          create  test/fixtures/account_mailer/sent

3) model(accout_mailer)の編集

※app/models/account_mailer.rbに以下メソッドを追加する
 
   $ ruby script/generate mailer AccountMailer sent
          exists  app/models/
          create  app/views/account_mailer
          exists  test/unit/
          create  test/fixtures/account_mailer
          create  app/models/account_mailer.rb
          create  test/unit/account_mailer_test.rb
          create  app/views/account_mailer/sent.rhtml
          create  test/fixtures/account_mailer/sent

4 メールのテンプレートファイルを編集する

※mytask/app/views/account_mailer/sent.rhtml を編集する

5 controllerからメールモデルを呼び出す

    def sendmail
      @user = User.find(params[:id])
      AccountMailer.deliver_sent(@user)
    end

これで完了、5分くらいでできちゃいます。

#5 ログイン画面を作成する(gem install login_generator)

   ブックマークに追加する
ログイン機能は、作成すると案外面倒なもの。
他のフレームワーク同様、Railsにももちろん他のエンジニアが作成したモジュールを
簡単に再利用できる仕組みがととのっています

  • まずはrootユーザに変更
    $ su - root
    Password:
  • gemlogin_generatorをインストールする
# gem install login_generator
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed login_generator-1.2.2
  • インストールが正常に完了したら、以下コマンドで作成開始
  (以下はコントローラーをaccountで生成)

 $ ruby script/generate login account
      create  lib/login_system.rb
      create  app/controllers/account_controller.rb
      create  test/functional/account_controller_test.rb

#4 scaffoldでRailsアプリケーションを作成

   ブックマークに追加する
Railsを覚えようと思った理由の1つがscaffoldが使ってみたかったためです。アプリケーションに必要なスケルトンをコマンド1つで作成できるという優れものです。とりあえず本の通りにやってみました。



とりあえず、helpでコマンドを確認する

$ ruby script/generate scaffold  --help
Usage: script/generate scaffold ModelName [ControllerName] [action, ...]

Rails Info:
    -v, --version                    Show the Rails version number and quit.
    -h, --help                       Show this help message and quit.

General Options:
    -p, --pretend                    Run but do not make any changes.
    -f, --force                      Overwrite files that already exist.
    -s, --skip                       Skip files that already exist.
    -q, --quiet                      Suppress normal output.
    -t, --backtrace                  Debugging: show backtrace on errors.
    -c, --svn                        Modify files with subversion. (Note: svn must be in path)
・・・省略

とりあえず、以下のコマンドで生成されるようです。

ruby script/generate scaffold [model_name] [controller_name]

それでは、実行してみます。

$ ruby script/generate scaffold project mytask
      exists  app/controllers/
      exists  app/helpers/
      exists  app/views/mytask
      exists  app/views/layouts/
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
・・・省略
これでスケルトンが生成されました。本当に簡単ですね。

#3 MySQLの設定とRailsとのつなぎこみ

   ブックマークに追加する
今回はMySQLでデータベースとテーブル作成

以下3つのデータベースを作成する
(ただ、_testはどのように使うかよくわからなかったので、_developmentと_productionだけ作りました)

■データベースを作成

  • mytask_development
  • mytask_test
  • mytask_production
    mysql> create database mytask_development;
    mysql> create database mytask_production;
    mysql> grant all on mytask_development.* to username@localhost identified by 'password';
    mysql> grant all on mytask_production.* to username@localhost identified by 'password';

■テーブルを作成、カテゴリ(プロジェクト)とタスク
タスクを纏めるカテゴリのようなもの(ここではプロジェクト)テーブルとタスクそのもののテーブルを作成する。
    create table projects (
      id int unsigned auto_increment,
      name varchar(128) not null,
      content varchar(255),
      task_count int default 0,
      status enum('close','open') default 'close',
      created_at timestamp,
      updated_at timestamp,
      limited_at timestamp,
      primary key  (id),
      index status_idx (status)
    );

    create table tasks (
      id int unsigned auto_increment,
      project_id int unsigned not null,
      name varchar(128) not null,
      content text,
      status enum('yet', 'exec', 'finish') default 'yet',
      created_at timestamp,
      updated_at timestamp,
      limited_at timestamp,
      primary key  (id),
      index project_id_idx (project_id),
      index status_idx (status)
    );

■railsアプリケーションの設定ファイル(DB設定と文字コート)を編集

mytask/config/database.yml を編集
development:
  adapter: mysql
  database: mytask_development
  username: username
  password: password
  socket: /var/lib/mysql/mysql.sock
  encoding: utf8

mytask/config/environment.rbに文字コード追加

#KCODE = 'u'
# Be sure to restart your web server when you modify this file.

#2 railsでmyTaskアプリケーションのスケルトン作成

   ブックマークに追加する
いよいよ、Railsでアプリケーション作成します。本に書いている通りにすすめていきます。
railsコマンドはアプリケーションに必要なスケルトンを生成してくれるようです。
以下に手順を説明します。

1) railsでアプリケーション作成
  rails [アプリケーション名]でrailsアプリケーションを作成する
$ rails mytask
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  components
      create  db
      ・・・省略

2) WEBrickで動作確認する
  Webrick(ウェブリック)とはRubyで作成されたWebサーバでRails開発(development)では
  編集したコードが自動でロードされるため開発効率がよいです。
$ cd mytask/
$ ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
      ruby script/server でWEBrickを起動する

      http://localhost:3000/でアクセスするとRailsのWelcomeページが表示される
Ci071202003512.jpg

#1 まずは環境設定(RubyGemsとRailsのインストール作業)

   ブックマークに追加する
かならずはまってしまうのが環境設定。1回設定すればOKですが、覚書として書いときます。

1) RubyとMySQLのバージョンを以下コマンドで確認できます
  とりあえずレンタルサーバはFedora6でMySQLとRubyは既にインストール済み。以下コマンドで各々のバージョンを確認します。

  Rubyのバージョンの確認方法
$ ruby -v
ruby 1.8.5 (2007-09-24 patchlevel 114) [i386-linux] 

  MySQLのバージョンの確認方法
$ mysql --version
mysql  Ver 14.12 Distrib 5.0.27, for redhat-linux-gnu (i686) using readline 5.0

ということで、まずはRailsのダウンロード&インストール

2)  RubyGemsのダウンロード
  RubyGemsはRubyのパッケージ管理ツールでRailsと関連ライブラリのインストールも簡単に行えるようになります。

    というわけで、RubyForgeよりrubygemsをダウンロードする

3) RubyGemsのインストール

  いよいよインストール。これが完了すればgemコマンドが使用できるようになります。
    $ tar xvzf rubygems-0.9.4.tgz
    $ ls
    rubygems-0.9.4  rubygems-0.9.4.tgz
    $ cd rubygems-0.9.4
    $ ls
    ChangeLog  LICENSE.txt  Rakefile  TODO  doc       gemspecs  pkgs             redist   setup.rb
    GPL.txt    README       Releases  bin   examples  lib       post-install.rb  scripts  test

    # su - root
    # ruby setup.rb

3) Railsのインストール
    
Gemsをインストール後、以下のgemコマンドでrailsをインストールする
# gem install rails --include-dependencies
$ rails -v
Rails 1.2.4

こんな感じでOK!


次回こそ、Railsでアプリ作成に入ります。

#0 Ruby On Railsでタスク管理ツールを作成する

   ブックマークに追加する
Ruby on Railsはまだ試してみたことがないので、勉強のため、シンプルなタスク管理ツールをつくってみたいと思います。

私はタスク管理にCheck*PadSlimTimerなどを使っているのですが、どちらもとてもシンプルで使いやすいです。それらサービスを手本に、よりプロジェクト管理に適したツールに作成しようと思います。自分のタスクを洗い出すツールのため、名前はmyTaskにします。(後から変える可能性ありですが。。。)

簡単な機能紹介。


■ 機能一覧
  1. タスクを書き出せる(リストで見れる)
  2. タスクに期限を設定できる
  3. タスクには、未着手、実行中、完了等のステータスがある
  4. メールで期限がきたら教えてくれる
  5. カテゴリごとにタスクを纏められる
  6. タスクは共有できる
  7. 完了までにかかった時間を確認できる

とりあえずこれくらいでいいでしょう。
では次回からいよいよRailsを使ってみます。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちmyTaskカテゴリに属しているものが含まれています。

前のカテゴリはMySQLです。

次のカテゴリはRailsです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

myTask: Monthly Archives

あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。