ホーム ブログ ページ 70

Scaffoldはどこからくるの? 前編

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJのエンジニアの高瀬です。

今回、ruby on railsに関する技術コラムを書くと言う事で、
scaffoldでプログラムを作ってみて、またそのプログラムは

どの様にして作られているか解説します。

Scaffoldってそもそも何?
最近のアプリケーション(特にWeb)は、アプリケーションのデータを

DB上で管理する事が多くなっていますが、

そういったDB上のテーブルを操作するプログラムを作りたい場合に、

基本的なテンプレートを提供してくれるのがscaffoldです。

scaffoldを使うと、簡単なアプリケーションがそれこそ10分で

出来上がるので、かなり重宝します。

 実際にScaffoldで作ってみる。
まず、Scaffoldを使ってアプリケーションを作ってみます。

最初に、railsでscaffold_testプロジェクトを作ってみましょう。

コマンドプロンプト上で、

rails scaffold_test
と入力してみてください。(>は入力しなくて良いです。)

大量に[ create ~~]と出てきたと思います。

今後は、このプロジェクト上で作業を行うので、

cd scaffold_test


で、カレントディレクトリを移動しておいてください。

 

次に、scaffold_testプロジェクト内でscaffoldを作ってみます。

扱うテーブルを決める必要がありますので、とりあえずメンバー管理として、

Memberモデルをつくり、名前(name)と説明(discription)と誕生日(birthday)だけ管理しましょう。

 ruby script/generate scaffold Member name:string discription:text birthday:datetime

これで、scaffoldの土台は出来ました。

ですが、肝心のdbがないので、 DBを作成します。

rails 2.0から、db:createが出来たので、そのコマンドを使います。rake db:create

(ここでは、DBの作成方法のエラーが出た場合や、1.x系の話は割愛します)

DBが出来たら、scaffoldで作成されたmigrationファイルからテーブルを作成します。

rake db:migrate

これでテーブルが出来たのでサーバーを立ち上げて、

プログラムにアクセスしてみましょう。

ruby script/server

を実行し、 下記のURLにアクセスしてください。

http://localhost:3000/members

「Listing members」と表示されるページにアクセスできると思います。

これで、New memberと表示されているリンクをクリックすると

メンバーが登録できます。

これだけで簡単なメンバー管理システムの出来上がりです。

scaffoldのソースを見てみる。


途中で実行した

ruby script/generate scaffold Member name:string discription:text birthday:datetime

で、管理する項目や、項目の属性を指定しているのですが、

今のプロジェクトのソースを見てみましょう。

scaffold_test フォルダの下にある、

app/controllers/members_controller.rbを何かのテキストエディタで

開いてみてください。

自分が書いた覚えのないプログラムが存在していると思います。

実は、ruby script/generateコマンドを実行した時、

      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/members
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      create  app/views/members/index.html.erb
      create  app/views/members/show.html.erb
      create  app/views/members/new.html.erb
      create  app/views/members/edit.html.erb
      create  app/views/layouts/members.html.erb
      create  public/stylesheets/scaffold.css
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/member.rb
      create    test/unit/member_test.rb
      create    test/fixtures/members.yml
      create    db/migrate
      create    db/migrate/001_create_members.rb
      create  app/controllers/members_controller.rb
      create  test/functional/members_controller_test.rb
      create  app/helpers/members_helper.rb
       route  map.resources :members
 と、大量にメッセージが出たと思いますが、ここで、createと出ている行は、railsが自動で

ソースコードを作ってくれています。      create  app/views/members
      create  app/views/members/index.html.erb
      create  app/views/members/show.html.erb
      create  app/views/members/new.html.erb
      create  app/views/members/edit.html.erb
      create  app/views/layouts/members.html.erb
      create  public/stylesheets/scaffold.css
      create    app/models/member.rb
      create    test/unit/member_test.rb
      create    test/fixtures/members.yml
      create    db/migrate
      create    db/migrate/001_create_members.rb
      create  app/controllers/members_controller.rb
      create  test/functional/members_controller_test.rb
      create  app/helpers/members_helper.rb

 というわけで、次回はこのコードがどの様にして作られているか、解説して行きたいと思います。

Ruby on Rails インストール for Windows

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして、KBMJのmimiです。

まずは初回ということで、 Windowsで行うRuby on Railsのインストール手順を書いてみたいと思います。



◆環境

OS:WindowsXP 2002

◆Rubyインストール

「One-Click Installer – Window」が簡単です。

http://rubyforge.org/frs/?group_id=167

    Railsインストール時に必要なRubyGemsも同時にインストールできます。
    最新のもの(Final Release)をインストールしてください。


◆Railsインストール

「スタート」⇒「プログラム」⇒「Ruby」⇒「RubyGems」⇒「RubyGems Package Manager」を起動
  →コマンドプロンプトが開くので、下記を入力します。

   c:\ruby>gem install rails

◆データベースのインストール

PostgreSQLの場合

http://www.postgresql.jp/PostgreSQL

からダウンロード後に、下記を入力します。
    c:\ruby>gem install postgres-pr

MySQLの場合

http://dev.mysql.com/downloads/

からダウンロード後に、下記を入力します。
    c:\ruby>gem install mysql

◆Rails動作確認テスト
・project/testディレクトリの中に、実行可能なアプリケーションを作成 します。


   c:\project>rails test
・Webサーバを立ち上げます。
    c:\project>ruby test\script\server

・ブラウザで確認
    http://localhost:3000
    「Welcome aboard」というタイトルの画面が表示されれば成功です。

Rubyでどう書く?特別編:Matzからのお題

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

KBMJがZDnetで連載している記事を紹介します。コメントなどありましたらそちらでお願いします。

Rubyでどう書く?特別編:Matzからのお題 高倉利明(KBMJ)

まつもとゆきひろ氏と食事をした時に頂いたお題にKBMJの高倉利明氏が答える。テーマは「Rubyでメモリカード上の写真を指定フォルダに振り分ける」だ。

問題

第6回のテーマは「Rubyでメモリカード上の写真を指定フォルダに振り分ける」です。

デジカメで撮りためたデータをPCにバックアップする際、大量の撮影データの振り分けが面倒です。

そこで今回はRubyスクリプトを使用してファイルを自動的に振り分けてみることにしました。

仕様

格納元フォルダ以下から画像データを抽出し、格納先フォルダに日付「yymmdd」ごとに振り分ける画像データかどうかは拡張子「jpg, JPG, jpeg, JPEG」で判定日付はEXIFの「MetadataDate」の日付を利用

回答例

require ‘parsedate’
require ‘fileutils’
require ‘find’
require ‘rubygems’
require ‘extexif’

# フォルダ指定
src = “/mnt/card/DCIM/100NECDT/”
dst = “/var/image/”

# ファイルリスト作成
list = []
Find.find(File.expand_path(src)) { |path|
  if /.*(jpg|JPG|jpeg|JPG)\z/ =~ path
    list << path
  end
}

# 振り分け
list.sort.each { |path|
  image = ExtExif.new(path)
  foldername = image[“MetadataDate”][0,10].split(/:/).join
  folderpath = dst + foldername
  Dir.mkdir(folderpath) unless File.exist?(folderpath)
  FileUtils.cp(path, folderpath)
}

解説

本処理は以下の流れで行っています。

  1. 対象フォルダ内から再帰的にファイルを検索してパスのリストを作成
  2. 各ファイルのEXIFデータから日付取得
  3. 日付のフォルダを作成
  4. 日付フォルダにファイルコピー

 今回はEXIFフォーマット取得のためにExtEXIFライブラリを使用しました。

最後に

今回は簡略化のため以下の処理を省いてあります。

  • 画像ファイルのバイナリファイル形式確認
  • EXIFから取り出した日付フォーマット確認

 実用に利するためには、このような点に注意すると良いと思います。

 なお、今回のお題はbuilder編集部の昼食会で、Matzにお会いしたときにもらったお題です。ご協力ありがとうございました!

最近人気な記事