by shigemk2

当面は技術的なことしか書かない

メールを送信してくれる入力フォームを作る

まあ、フォームを作るだけなら普通にHTMLで書くなり
Google Docsのフォーム作成機能とかを使えばいいんだけど、
メール送信機能があるのがいいっぽいね。

インストールはこっちから
WordPress › Contact Form 7 « WordPress Plugins

例 requiredクラスで、「John Smith」がデフォルト入力テキストボックスを出現させる。入力必須。

[text* your-name 20/40 class:required "John Smith"]

メールの書き方はココを参照してください
Setting Up Mail | Contact Form 7

Ruby 2.0 & Rails 4.0 #webcat

f:id:shigemk2:20131116233105g:plain

@a_matsuda
Asakusa.rb 主宰
Forkwell社外取締役

begin

読めば分かるようなことは話しません

本日のお題

2つのメジャーバージョンアップ
Ruby 1.9.3 → 2.0.0
Rails 3.2.9 → 4.0.0
Rake 10.0
RubyGems 2.0
RDoc 4.0
RSpec 3.0

など
空前のメジャーバージョンアップ期

心機一転参入のチャンス
(色々切り替えていかないといけない)

Ruby2.0

(Matz)長年の悲願

絵に描いた餅 燃料 人参 Perl6 (出ないと思われてた)

2003 1.8 その頃は偶数番号が安定版
2007 1.9 開発版(すごく不安定) →1.9.0は開発版 1.9.1が安定版でどうか(1.10.0とかは使いたくない)
2010.8 1.9.2 安定版
2011.10 1.9.3 安定版

2013.2.24 2.0リリース ダッシャアァァァ

2003にMatzがやりたかった2.0
Variable Scopes
Multiple Values
Range in Condition
Method Visibilities
Keyboad Argument (今回実装)
Method Combination (今回実装)
Selector Namespace (今回実装)
Optional Type
など

2.0リリースと20周年を同時にやりたい

1.9.3..2.0.0

1.8..1.9ほど 大きな変更はなく
本当に重い変更(=阿鼻叫喚)は1.9で済ませた

1.9.3との互換性を重視し、1.9.3からスムーズに移行できる 非互換な変更は2.1以降
(変な使い方をしなければおk)

新機能(後述)
パフォーマンス向上 VM GC require(←遅すぎるよ)
デフォルトスクリプトエンコーディング ついにデフォルトUTF-8になりました(たぶんこれが最大の非互換)

パフォーマンス向上

e.g Rails起動が2.0にすると倍近く速くなった →バージョン上げて困ることも少ないので、上げたら幸せになるかもしれない
VM GC require

貢献者
VM @ko1
GC @nari3

マジコメとは何だったのか

ユーザーにとっては必要な段階があった
String が encoding を持つという概念
CSI
internal encoding, external encoding
US-ASCII, ASCII-8BIT, BINARY
mojibake == 死

神展開
encoding なんとなく分かったでしょ?ということでデフォルトUTF-8にしました(成瀬さんすげえ)

M17Nについて詳しく

その他
Refinements
など

Rails 4.0

2004.07 公開
2005.12 1.0
2007.12 2.0
2010.8 3.0
2012-2013 4.0

メジャーバージョンアップに伴う新パラダイム(業界の常識を覆すのばっかり)
1.0 DRY, CoC
2.0 RESTful
3.0 Modularity

4.0 特にない

「新機能はいろいろ」
「新パラダイム」は特にない
基本的には3.2の正常進化形
4.0にしたきっかけは、1.8サポートを終了したから?2.0に引きずられる形で?

バージョン番号なんて飾りです
Railsは絶え間なく変化する1本の線路で、バージョンの区切りに意味はない
なので、新機能を細かくみるより、4.0.0の大きな流れを把握するといいかもしれない

Railsの新バージョン番号戦略
新バージョンで使えなくなる機能はいきなり消さない
1個前のバージョンで deprecation warningを出す
次のバージョンで消す (とはいえ、3.2.9から4.0.0でいきなり消えるものもあるよ)

4.0.0の特徴

最初から安定版を指向
4.0.0が出た瞬間から安心して使える
3.2.xとの互換性を重視

最近の潮流

Modern
Ruby '>=1.9.3'
APIのさらなる洗練
あまり使われていない機能をもりもり外部Gemへ(古いものをどんどん捨てていく)
APIもいろいろあるぜ
PATCH verb (Get Post PutのPutよりもPATCHを使ったほうがいいんじゃない?)
Active Recordがすごい変わってれぅ

RIP
Ruby 1.8 support
vendor/plugins
ActiveResource
AR.find :all
dynamic finders
ActiveRecord::SessionStore
Rack::Cache(Cookpadで問題が発生したやつ)

Speed
パフォーマンスの向上
1.9移行に伴うコードのスリム化(とっても読みやすくなった)
Sprocketsのprecompile
threadsafe(スレッドに注意したアプリを書こうぜ)
AS::Queue (タスクの遅延処理するらしいけど、使うことあるんだろうか)
TurboLinks (DHHが入れた機能で、Ajaxモドキ)

Security
Mass Assingment Security → Strong Parameters
(ロシア人がRailsをクラックした部分を改造してれぅ)

Real-time web
AC::Live(@tenderlove RealtimeSalami)

ActiveRecord
メンテナー1 @tenderlove
メンテナー2 @jonleighton
PostgreSQL

Social coding
2721 peopleがコミッター

南米
@josevalim
@spastorino
コミッターの第3世代が南米からやってきてれぅ

2013にRubyKaigi復ッ活ッ!!するときに@josevalm来るよ

Ruby2.0の話は?

Ruby2.0 on Rails

RubyConfでしゃべったやつを見てくれよ
https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails

まとめ

The new Ruby world is coming
People ar making the Ruby world better everyday
Meet the people (=the community) and say "Hi!" to them! <3 <3 <3

直接会ってありがとうと言えばいいんじゃないだろうか。

追記

講演のスライドがここにあるので、参考にしたらいいと思います。
Ruby 2 and Rails 4 // Speaker Deck

Rails4 in Action Rails4でアプリを作ってみた話 #webcat

f:id:shigemk2:20131116233105g:plain

@kentaro
ぺぱぼの人

SQALE
Triglav

Living on the Edge

Rails command

rails new myap --edge

Living on the Edge is harder than you might imagine.

これからの話はあくまでEdge Railsの話です。

Edge Railsを使うことでRailsの内部を知ることが出来た

参考書籍
Crafting Rails Applications

what's new in Rails4

いろいろハードルが高い

タメになるリンク
Rails4 Release Notes
Edge Guides
Edge API Reference
Rails 4 compilation links

No big changes, but too many newly introduced and removed
(今からの話はアプリ作ってたらぶつかったら話)

Rails Guides now got responsive design!
add_flash_types
Web routes viewr bundled in Rails4

root...
instead of 'root to: 'main#index''

root 'main#index'

concern
index option(インデックス貼るのを忘れくくなります) We never neglect to add indices!
scaffold generator now use 'content_tag_for'
AR finder methodsが消える
button_to_functionも消える
古い様式のfindも消える
active_record_deprecate_finders

Strong Parameters
controller have responsibilety to secure mass assignment instead of models.
(まあパラメータの処理をコントローラでやろうよって話)

attr_accessible (Old way)
ActionController::Parameters
accepts_nested_attribute_for

Queue API (メールを送るときに非同期で送れて便利です)

Define Job and Enqueue It.
Queueに投げて実行してくれる。

ActionController::Live

streamがどんどん実行してくれる Works fine with "Server-Sent Events"
テンプレートを部分的に送る

QueueとLiveを使って何が出来るのか?

websocketは覚えるのが大変ですわ
なのでQueueとLiveでチャットアプリぽいものを作ることが出来る
SSE Rails Redisを組み合わせてチャットアプリぽいものを作った
(横に並べられるからとてもスケーリング)

まとめ

Living on the Edge Rails is fun and good lesson
Rails 4 is really promising and exciting
Tye Rails4 ASAP!
I'm waiting for your commit to Triglav
(まあ自分で作る分にはRails4つかってもいいんじゃない?)

その場で入れたらRun Methodが呼ばれる