Rails tips 2007-01-20 氏久 達博. 注 この資料は後で読む用に 作られており、プレゼン 時にスクリーンに映るも のと内容が若干異なりま す。

Slides:



Advertisements
Similar presentations
1. これだけは入れとけ!便利な gem 2. こう記述しろ!設定ファイル 3. 意外と知らない?注意点.
Advertisements

Rails 勉強会@大阪 -002 cuzic. 今日はなすこと 相対パスプラグイン Double Filter Plugin 埋め草 –Cuzic の環境とか –1 つのボタンで複数の Ajax なアクションを実 行.
ECLフレームワー ク 近畿大学 理工学部 情報学 科 間野 哲 弥.
コンピュータ基礎実習 ( 上級 ) 第七回 CGI の利用 清水淳紀. はじめに  本講義のテーマ  ホームページで良く利用される CGI ( シージーアイ ) について学びます。  CGI とは何か  CGI の基礎知識  CGI をサーバーにインストールする  CGI を実行してみる.
わんくま同盟 東京勉強会 #26 - LT 大集合 !! 派生開発プロセス XDDP のすすめ 2008/11/15( 土 ) fnya.
テストについて 近畿大学大学院 田中大介 資料:
Web アプリケーション開発 ~図書館管理システム~ 北海道情報大学 情報メディア学 部 情報メディア学科 新井山ゼミ 高橋 隼.
Ruby on Rails (RoR) 講習会 近畿大学大学院 田中大介. 本日の目標 Web アプリケーションを作ろう!
ライブラリ としての Web サービス 氏久 達博 大阪大学大学院 M1. 注 ➲ この発表はネタ半分ま じめ半分です。
自社システムにおける 最適なフレームワーク 2012/06/15. 条件 機能は「自己評価」、「勤務表」、「掲 示板」、「ログイン機能」を想定 使用するフレームワーク等は全て無料で あるが未来があるものを使用する 作るにあたり最適なフレームワーク、ソ フトを提供する 画面は HTML5 で作成することが前提.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
BBT大学 Ruby on Rails開発環境セットアップマニュアル
プログラマのレベルアップ.
第11回JavaScriptゼミ セクション8-2 発表者 直江 宗紀.
下藤 弘丞 SecureWeblogの構築.
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
オレポータビリティ 日本Rubyの会 青木 峰郎.
実習用サーバの利用開始手順 (Windowsの場合) TeraTerm Proをインストール 公開鍵をメールで送付
WordPressの基礎.
CakePHPを業務に導入する Shin x blog 新原 雅司.
Log4netを使ったロギング機能 オガシン.
Log4netを使ったロギング機能 オガシン.
rails under “production”
法人e名刺 ブログ運用マニュアル 社外秘 目次 □ブログ運用ルール
アプレット (Applet)について.
吉田和弘 株式会社ミッタシステム Rubyのすすめ 吉田和弘 株式会社ミッタシステム
バージョン管理超入門 まだファイルコピーしてます?
haXeでオリジナルコンポーネント作り WCAN mini Vol 小笠原
第4回 個人の動画配信補足のためのWeb構築
Web App Semi 2008 #1 Web App Semi 2008 #1.
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
ビューとコントローラ.
Curlの仕組み.
Day3 Day4 Day3 Day4.
2009/5/22 けーちゃん カンタン  Wikiで情報共有 あいさつ 2009/5/22 けーちゃん
片岡 哲也 (社) システムエンジニアリング岡山
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
基礎プログラミング演習 第1回.
2016年度秋期 成果発表会 2016年11月25日 大阪開発センター 技術一部 畑中 龍樹.
サンデーPonセットアップマニュアル <目次> 1.動作環境について 2.セットアップ作業 ①. ソースの設置
SensorML Sensor Modeling Language
携帯ゲーム機の進化 情報モラル研修 ~Nintendo3DSを例に~
11.Webサイトとデータベース, Webサイト+ブログシステムの開設手順例
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
SPARS-J デモ 山本哲男 立命館大学 情報工学部 2018/12/1 SPARS-J デモ.
Windows Azure (CTP) 触ってみた
Microsoft MVP for Development Tools – Visual C++
対応可否 スキル一覧 株式会社エージェント 2015年10月7日 Ver.1.0.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
Microsoft MVP for Development Tools – Visual C++
平成19年10月19日 図書系のための アプリケーション開発講習会
Javaによる Webアプリケーション入門 第2回
プロジェクト管理ソフトの群雄割拠をどうやって勝ち抜くか?②
携帯ゲーム機の進化 情報モラル研修 ~Nintendo3DSを例に~
Windows Azure (CTP) 触ってみた
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Microsoft MVP for Development Tools – Visual C++
Htmlの基本.
プロジェクト演習Ⅱ インタラクティブゲーム制作
個人の動画配信のためのWebサーバ構築 06A1058 古江 和栄.
JSFによるWebアプリケーション開発 第3回
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
JSPの基本 J2EE I (データベース論) 第8回 /
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
使用する CSS・JavaScrpitも指定
第2回 Webサーバ.
Presentation transcript:

rails tips 氏久 達博

注 この資料は後で読む用に 作られており、プレゼン 時にスクリーンに映るも のと内容が若干異なりま す。

自己紹介 氏久 達博 「うじひさ」 大阪大学の大学院生 奈良・香川・長崎出身の大阪人

自己紹介 Ruby 歴 : 2006 年 6 月から Rails のため Ruby を勉強 それ以前は Perl, PHP など 株式会社アジャイル ( 元 ) Haskell 勉強会を企画 次回は 1 月 28 日 ( 日 )

『 rails tips 』 対象 : Ruby on Rails を使いは じめてみたものの、本格的な アプリケーション開発はこれ からという人 内容 : ハマりどころ回避方法, 事例紹介など

HTML 出力エスケー プ AR, フォーム (params), cookie な ど由来のデータをそのまま出力す るのは危険。 → クロスサイトスクリプティング ERB::Util#h で、きちんとエス ケープしましょう。

HTML 出力エスケー プ View で ') %> みたく毎回 h をつけるのは面倒 だし、美しくない。 (h があるのがふつうで、ないのはむしろ例外的 )

HTML 出力エスケー プ プラグインに頼ろう! write less code!

HTML 出力エスケー プ autoescape プラグイン : デフォルトで h がかかる。 ( 正確には CGI.util#escapeHTML) タグ除去 ( なにもしなくていい ) そのまま model で acts_as_raw :name もしくは 安全、破壊的

HTML 出力エスケー プ autoescape プラグイン : 対象は AR 由来データのみ (after_find でフィルタリング ) acts as raw な要素がなくても acts_as_raw 宣言が必要 汚い …?

HTML 出力エスケー プ Safe ERB プラグイン : AR 由来の値や、リクエスト由来の値を h を使 わずに表示しようとすると例外を発生する。 タグ除去 そのまま controller し てから 安全、非破壊的

HTML 出力エスケー プ inverse h プラグイン : プラグインがあるだけで、全ての view の h ありと h なしが逆転。 タグ除去 そのまま 安全、非破壊的、自然 誰か作ってください

CSS/JS での画像指 定 例 : CSS にて background:url('/images/a.jpg'); では OK では NG ( 相対パス問題 )

CSS/JS での画像指 定 ● 解決策 1 CSS に対応する View を用意して ERb で記述する。 background:url( ); application.rhtml で 'main') %>

CSS/JS での画像指 定 ● 解決策 2 Relative Path Plugin の スタティックファイルフィルタ機能を使う。 ( 正規表現で置換 ) ※ WEBrick, Mongrel 限定!

CSS/JS での画像指 定 ● 解決策 3 javascript 側で対応。 ( 美しくない )

CSS/JS での画像指 定 " きれいな " 解決策は ないものか … public 以下でも ERb が 使えるように拡張するとか?

振舞駆動開発 ・ Rails でも BDD: Behaviour Driven Development ・ RSpec については 先月の Ruby 勉強会を参照

振舞駆動開発 RSpec on Rails の例 : require File.dirname(__FILE__) + '/../spec_helper' context " モデルのユーザクラスについての仕様 " do fixtures :users setup = User.find users(:ujihisa).id end specify " 氏久は 22 歳のはず " 22 end

振舞駆動開発 RSpec on Rails の実行 : $ rake spec RAILS_ENV=test または、 (1) spec サーバを立ち上げておいて $ ruby script/rails_spec_server (2) 別ターミナルで実行 $ ruby script/rails_spec spec/models/*

振舞駆動開発 RSpec on Rails の良いところ : ・ assert_* じゃなく should_* ・ context, specify で日本語が 使える柔軟性 ・ Rails の環境設定を再読込み しないので、超高速

振舞駆動開発 RSpec on Rails の穴 : ・日本語のドキュメントが ほとんどない ・ rails_spec_server が C-c で 終了しない。バグ? ・ rake spec すると development 環境 の DB データが fixtures で上書き!

デプロイ ( 配置 ) Rails 関連書籍では、なぜか デプロイ関係の記述が非常に 少ない。 →blog など、 Web 上の情報に頼 らざるを得ない

デプロイ ( 配置 ) ・早めの SwitchTower ・手作業でのデプロイは かなり面倒。

はじめてのデプロイ ありがちな道のり ( これでも順調 ) (1) svn/cvs/ftp とかでアップロード (2) パーミッション変更 (log, tmp) (3) rake db:migrate RAILS_ENV=production (4) (rake db:fixtures:load RAILS_ENV=production) (5) (apache+cgi で動作確認 ) (6) public/.htaccess 書き換え (7) apache+fcgi で動作確認 (8) あれ、動かない … (9) log 見たりして確認、修正、 etc...

はじめてのデプロイ たくさんあるハマりどころ ・ production 環境への設定し忘れ ・ php と違って、普通に apache 使うだけというのはむしろ異端 ( apache mod_proxy + lighttpd とか ) ・相対パス問題 (Relative Path Plugin 使いましょう ) ・ public/index.html 削除し忘れ (public 以下は優先される静的ファイル ) ・ポートの競合 (lighttpd を 80 で起動しようとしたら apache と競合 ) ・そもそもサーバに Ruby, rubygems, rails, fcgi などをインストールしなきゃ ならない (php とか PEAR なら今はどこでも最初から入ってる ) ・ ssh 使えるのが前提 ( 一応なくてもできるけど、とっても不便 ) ・ etc... よくあるレンタルサーバで すぐ使えるようなモノじゃない

はじめてのデプロイ 出先でも使える、自分のための プライベートな Web アプリ → 作ってはみたものの、 どうやって運用する? ・専用サーバ借りる ・自宅サーバ構築する

はじめてのデプロイ rails の問題点 : 「とりあえず公開」が できない これが出来ると rails はもっと広 く普及するのでは … ?

Just in Time on Rails 作ってみました 作った rails アプリを圧縮して アップロードするだけ

Just in Time on Rails α 版 無料, 無保証 Linux + Pound + Mongrel + SQLite3

Just in Time on Rails 1 アプリ 1 ポート、 サブドメインに割り当て 悪用しないでね

事例紹介 : HighTube 動画配信システム など多数 開発 : ( 株 ) アジャイル ( 株 ) 京都三条ラジオカフェ

事例紹介 : HighTube HTML 出力エスケープ ふつうに h 使ってる CSS/JS での画像指定 CSS は舞波方式、 JS は JS で

事例紹介 : HighTube テスト駆動開発 デプロイ : cron & Subversion 構成 Linux + {Apache mod_proxy + Lighttpd, Pound + Mongrel} + MySQL + Rails 1.1.6}

事例紹介 : HighTube 『京都総文』 2006 年 7 月に PHP + Maple で開発 開発期間は 3 週間 メインスタッフは 2 人

事例紹介 : HighTube 『京都府立植物園』 2006 年 10 月に、いろいろと 機能追加したものを rails で作り直し 開発期間は 2 週間 メインスタッフは 3 人

おわり ご清聴ありがとうございました。