Rfm Code Reading #16を開催しました

2012年4月21日(土)に「Rfm Code Reading #16」を開催しました。今回は5名の方にご参加いただきました。ご参加いただいた皆さま、ありがとうございました。

次回の開催は2012年6月16日(土)を予定しており、引き続きFileMaker Server 12 XML APIの変更点やGinjo-Rfm 2.0の新機能と変更点について確認していく予定です。

Rfm Code Reading #16 開催のお知らせ

2012年4月21日(土)午前10時よりRfmのソースコード読書会「Rfm Code Reading #16」を開催します。

RubyFileMaker ServerのカスタムWeb公開に興味のある方のご参加をお待ちしています。

 開催日時:2012年4月21日(土)午前10時から正午まで
 開催場所:国立オリンピック記念青少年総合センター センター棟408号室
      http://nyc.niye.go.jp/facilities/d7.html
 申込方法:イベント開催支援ツール ATND(アテンド)のサイトよりお申し込みください。
      http://atnd.org/events/27851
 参加費用:300円
 テーマ :FileMaker Server 12 XML APIの変更点

FM-Tokyo(FileMaker Pro 東京ユーザーズミーティング)の分科会活動の一環として、Rfm Code Readingでは、Rfmのソースコードを読み解くことにより、カスタムWeb公開やRuby、およびRuby on Railsを使った開発のスキルアップを目指します。今回はFileMaker 12 製品ラインが発表・発売されたので、FileMaker Server 12 XML APIの変更点について確認していく予定です。

Ginjo-Rfm 2.0のActiveModel互換機能を確認するには

2012年2月4日現在、OS X Lion Serverの最新バージョンは10.7.3、Ruby on Railsの最新バージョンは3.2.1です。ここではRails 3.2.1とGinjo-Rfm 2.0をOS X Lion Server v10.7.3にインストールする手順を説明し、後半でGinjo-Rfm 2.0のActiveModel互換機能について簡単に確認します。なお、あらかじめFileMaker Server 11.0v4をインストールしておく前提として説明を進めます(この資料はRfm Code Reading #15用に書かれたものです)。

Xcodeをインストールする

Mac App StoreからLion用のXcodeをダウンロードおよびインストールを行います(Lion用のXcodeは現在無料です)。Xcodeのダウンロードには時間がかかり、ダウンロードが完了してもインストール作業は完了していないので注意してください。ダウンロード後にアプリケーションフォルダにあるInstall Xcode.appを起動して、Xcodeのインストールを行う必要があります。

Rails 3.2.1をインストールする

Snow LeopardではRailsがあらかじめインストールされていましたが、LionにはRailsが入っていません。Rails 3.2.1をインストールする場合には、インターネットに接続している状態で「ターミナル」アプリケーションを起動して、「sudo gem install --version 3.2.1 rails --no-ri --no-rdoc」とコマンドを入力します。

$ sudo gem install --version 3.2.1 rails --no-ri --no-rdoc
Password:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Successfully installed i18n-0.6.0
Successfully installed multi_json-1.0.4
Successfully installed activesupport-3.2.1
Successfully installed activemodel-3.2.1
Successfully installed rack-1.4.1
Successfully installed rack-cache-1.1
Successfully installed rack-test-0.6.1
Successfully installed journey-1.0.1
Successfully installed hike-1.2.1
Successfully installed sprockets-2.1.2
Successfully installed erubis-2.7.0
Successfully installed actionpack-3.2.1
Successfully installed arel-3.0.0
Successfully installed tzinfo-0.3.31
Successfully installed activerecord-3.2.1
Successfully installed activeresource-3.2.1
Successfully installed mime-types-1.17.2
Successfully installed polyglot-0.3.3
Successfully installed treetop-1.4.10
Successfully installed mail-2.4.1
Successfully installed actionmailer-3.2.1
Successfully installed rake-0.9.2.2
Successfully installed thor-0.14.6
Successfully installed rack-ssl-1.3.2
Successfully installed rdoc-3.12
Successfully installed railties-3.2.1
Successfully installed rails-3.2.1
27 gems installed

インストール完了後に、改めてRailsのバージョンを確認してみます。

$ rails -v
Rails 3.2.1

Ginjo-Rfm 2.0をインストールする

Ginjo-Rfm 2.0をインストールするには、いつものようにgemコマンドを使用します。

$ sudo gem install ginjo-rfm --no-ri --no-rdoc
Password:
Successfully installed ginjo-rfm-2.0.0
1 gem installed

アプリケーションを新規に作成する

ターミナルで適当な作業場所に移動し、「rails new sample」を実行してアプリケーションを新規に作成します。

$ cd ~/Desktop/
$ rails new sample
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/mailers
create app/models
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching source index for https://rubygems.org/
Using rake (0.9.2.2)
Using i18n (0.6.0)
Using multi_json (1.0.4)
Using activesupport (3.2.1)
Using builder (3.0.0)
Using activemodel (3.2.1)
Using erubis (2.7.0)
Using journey (1.0.1)
Using rack (1.4.1)
Using rack-cache (1.1)
Using rack-test (0.6.1)
Using hike (1.2.1)
Installing tilt (1.3.3)
Using sprockets (2.1.2)
Using actionpack (3.2.1)
Using mime-types (1.17.2)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.4.1)
Using actionmailer (3.2.1)
Using arel (3.0.0)
Using tzinfo (0.3.31)
Using activerecord (3.2.1)
Using activeresource (3.2.1)
Using bundler (1.0.0)
Installing coffee-script-source (1.2.0)
Installing execjs (1.3.0)
Installing coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Installing json (1.6.5) with native extensions
Using rdoc (3.12)
Using thor (0.14.6)
Using railties (3.2.1)
Installing coffee-rails (3.2.2)
Installing jquery-rails (2.0.0)
Using rails (3.2.1)
Installing sass (3.1.13)
Installing sass-rails (3.2.4)
Installing sqlite3 (1.3.5) with native extensions
Installing uglifier (1.2.3)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

$ cd sample

Ginjo-Rfm 2.0のREADMEを参考にしてGemfileに下記の行を追加します。

gem 'ginjo-rfm'

READMEの記述を参考に一応「bundle install」を実行します。

$ bundle install
Using rake (0.9.2.2)
Using i18n (0.6.0)
Using multi_json (1.0.4)
Using activesupport (3.2.1)
Using builder (3.0.0)
Using activemodel (3.2.1)
Using erubis (2.7.0)
Using journey (1.0.1)
Using rack (1.4.1)
Using rack-cache (1.1)
Using rack-test (0.6.1)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.1.2)
Using actionpack (3.2.1)
Using mime-types (1.17.2)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.4.1)
Using actionmailer (3.2.1)
Using arel (3.0.0)
Using tzinfo (0.3.31)
Using activerecord (3.2.1)
Using activeresource (3.2.1)
Using bundler (1.0.0)
Using coffee-script-source (1.2.0)
Using execjs (1.3.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Using json (1.6.5)
Using rdoc (3.12)
Using thor (0.14.6)
Using railties (3.2.1)
Using coffee-rails (3.2.2)
Using ginjo-rfm (2.0.0)
Using jquery-rails (2.0.0)
Using rails (3.2.1)
Using sass (3.1.13)
Using sass-rails (3.2.4)
Using sqlite3 (1.3.5)
Using uglifier (1.2.3)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

コントローラーの雛形を作成します。

$ rails g controller art list
create app/controllers/art_controller.rb
route get "art/list"
invoke erb
create app/views/art
create app/views/art/list.html.erb
invoke test_unit
create test/functional/art_controller_test.rb
invoke helper
create app/helpers/art_helper.rb
invoke test_unit
create test/unit/helpers/art_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/art.js.coffee
invoke scss
create app/assets/stylesheets/art.css.scss


app/controllers/art_controller.rbを編集します。ここでは以前のバージョンで使用していたサンプルアプリケーションの一部をそのまま使います。

require "rfm"

class ArtController < ApplicationController

  # This action finds all the records using a List layout. See view/art/list.rhtml 
  # to see how the data from this aciton is rendered to the page
  def list
    
    # Create a server object using our config (from environment.rb)
    fm = Rfm::Server.new(FM_CONFIG)
    
    # if we were passed an :id param, it is the sort field, otherwise we find with no sort
    # because we store the results (an Rfm::RecordSet object) in an instance variable
    # (@records) they will be available on the web page.
    if params[:id] != nil
      @records = fm[FM_CONFIG[:database]]["English_List_View"].all(:sort_field => params[:id])
    else
      @records = fm[FM_CONFIG[:database]]["English_List_View"].all
    end
  end
end

app/views/art/list.html.erbを編集します。ここでは以前のバージョンで使用していたサンプルアプリケーションのビューファイルをそのまま使います。

<%
# this page renders the list of records
%>

<table cellspacing="0">
	<tr>
		<% sort_label = "(sort)" %>
		
		<th>Title
			<small><%= link_to_if(params[:id] != "Title", sort_label, :id => "Title") %></small></th>
		
		<th>Cover Photo Credit
			<small><%= link_to_if(params[:id] != "Cover Photo Credit", sort_label, :id => "Cover Photo Credit") %></small></th>

		<th>Status
			<small><%= link_to_if(params[:id] != "Status", sort_label, :id => "Status") %></small></th>

		<th class="center">Quantity in Stock
			<small><%= link_to_if(params[:id] != "Quantity in Stock", sort_label, :id => "Quantity in Stock") %></small></th>
	</tr>

    <%
	# Here, we loop through all the found records, spitting out a table row for each one
	%>
	<% @records.each_index do |i| %>
	<tr<%= i % 2 == 1 ? ' class="odd"' : '' %>>
		<% record = @records[i] %>
		<td><%= link_to(h(record["Title"]), :action => :detail, :id => record.record_id) %></td>
		<td><%= h record["Cover Photo Credit"] %></td>
		<td><%= h record["Status"] %></td>
		<td class="center"><%= h record["Quantity in Stock"].to_i %></td>
	</tr>
	<% end %>
</table>

config/environment.rbを編集して下記の設定を追加します(旧バージョンのRfmとの互換性確認用です)。

# FileMaker Server Object config
FM_CONFIG = {
:host => "127.0.0.1",
:port => 16014,
:account_name => "",
:password => "",
:database => "FMServer_Sample",
:ssl => false,
}

Railsを起動します。

$ rails s

http://localhost:3000/art/listにアクセスして、FileMakerデータベースのレコードが表示されることを確認します。

次にActiveModel互換について確認するために、モデルの雛形を作成します。

$ rails g model art
invoke active_record
create db/migrate/20120203235539_create_arts.rb
create app/models/art.rb
invoke test_unit
create test/unit/art_test.rb
create test/fixtures/arts.yml

いったんRailsを終了し、app/models/art.rbを編集します。

(編集前)

class Art < ActiveRecord::Base
end


(編集後)

require 'active_model'

class Art < Rfm::Base
  config :layout => 'English_List_View', :host => "127.0.0.1", :port => 16014, :account_name => "", :password => "", :database => "FMServer_Sample", :ssl => false
end


art_controller.rbにおいて「@records = fm[FM_CONFIG[:database]]["English_List_View"].all」を「@records = Art.all」に変更し、Railsを起動します。

$ rails s

http://localhost:3000/art/listにアクセスして、FileMakerデータベースのレコードが表示されることを確認します。

Rfm Code Reading #15 開催のお知らせ

2012年2月4日(土)午前10時よりRfmのソースコード読書会「Rfm Code Reading #15」を開催します。

RubyFileMaker ServerのカスタムWeb公開に興味のある方のご参加をお待ちしています。

 開催日時:2012年2月4日(土)午前10時から正午まで
 開催場所:関東ITソフトウェア健保会館 大久保会議室 B1F B室
      http://www.its-kenpo.or.jp/html_ex/i_renraku.html
 申込方法:イベント開催支援ツール ATND(アテンド)のサイトよりお申し込みください。
      http://atnd.org/events/24763
 参加費用:300円
 テーマ :Ginjo-Rfm 2.0の新機能と変更点

FM-Tokyo(FileMaker Pro 東京ユーザーズミーティング)の分科会活動の一環として、Rfm Code Readingでは、Rfmのソースコードを読み解くことにより、カスタムWeb公開やRuby、およびRuby on Railsを使った開発のスキルアップを目指します。Ginjo-Rfm 2.0(https://github.com/ginjo/rfm)が公開されたため、Ginjo-Rfm 2.0の新機能と変更点について少しずつ確認していく予定です。

2011年12月10日に開催を予定していたRfm Code Readingの開催を中止します

2011年12月10日(土)午前に開催を予定していたRfm Code Readingは、都合により開催を中止させていただきます。

直前のご案内で申し訳ありませんがご了承ください。次回の開催は2012年2月を予定していますが、次回の日程や開催場所が正式に決まり次第、本ブログでご案内します。どうぞよろしくお願いします。

Rfm Code Reading #15 開催のお知らせ(開催中止・延期)

【2011.12.09追記】2011年12月10日(土)午前に開催を予定していたRfm Code Readingは、都合により開催を中止させていただきます。申し訳ありませんがご了承ください。

2011年12月10日(土)午前10時よりRfmのソースコード読書会「Rfm Code Reading #15」を開催します。

RubyFileMaker ServerのカスタムWeb公開に興味のある方のご参加をお待ちしています。

 開催日時:2011年12月10日(土)午前10時から正午まで
 開催場所:関東ITソフトウェア健保会館 大久保会議室 B1F A室
      http://www.its-kenpo.or.jp/html_ex/i_renraku.html
 申込方法:イベント開催支援ツール ATND(アテンド)のサイトよりお申し込みください。
      http://atnd.org/events/22559
 参加費用:300円
 テーマ :Ginjo-Rfm 1.4.3の変更点

FM-Tokyo(FileMaker Pro 東京ユーザーズミーティング)の分科会活動の一環として、Rfm Code Readingでは、Rfmのソースコードを読み解くことにより、カスタムWeb公開やRuby、およびRuby on Railsを使った開発のスキルアップを目指します。Ginjo-Rfm 1.4.3(https://github.com/ginjo/rfm)が公開されたため、予定を変更してFmStoreではなくGinjo-Rfm 1.4.3の変更点について確認していく予定です。