[Flex][Ruby]Ruby唐辛子
ソースコード HTML化 コンバーター「唐辛子」という非常に便利なアプリケーションがあるんですが、残念ながらRubyに対応していません。そこでRubyコード変換機能を追加したものをリリースしました。僕が使いたいというのが最大の理由なので必要最小限のプログラミング言語(Flex, ActionScript, JavaScript, Ruby, HTML, and XML)のみ変換可能です。その他の言語については本家をご利用ください。
Rubyコードはこんな感じに表示されます。
# POST /projects # POST /projects.xml def create @project = Project.new(params[:project]) respond_to do |format| if @project.save flash[:notice] = ‘Project was successfully created.’ format.html { redirect_to(@project) } format.xml { render :xml => @project, :status => :created, :location => @project } else format.html { render :action => "new" } format.xml { render :xml => @project.errors, :status => :unprocessable_entity } end end end
参考:
八角研究所 : Flex2でソースコードをブログに貼り付けるツールを作る(1) - ブログに美しいソースコードを貼り付けよう
八角研究所 : Flex2でソースコードをブログに貼り付けるツールを作る(2) - ソースコードをブログに貼り付けるツールを拡張しよう
[Flex][Rails]Railsがアンダースコアを勝手にハイフンに変える
例えばデータベースにfirst_name, last_nameというコラムを持つusersというテーブルがあって、Railsでデータベースの内容をto_xmlで呼び出すと、以下のようにfirst_nameとlast_nameのアンダースコアを勝手にハイフンに変える。
<?xml version="1.0" encoding="UTF-8"?> <users> <user> <first-name>Colin</first-name> <last-name>Moock</last-name> </user> </users>
Flexでこのxmlデータのノードを受け取る場合
//Data set from Rails var user:XML; trace(user.child("first-name"));//Colin
とするか、Rails側で勝手にハイフンに変えないようにする。
@user = User.find(params[:id])
render :xml => @user.to_xml (:dasherize => false)
O’Reilly Media “Version Control With Subversion”の無料pdf
上記オライリー本のオンラインページがあって、Subversion 1.4と1.5用のpdfファイルが無料ダウンロードできる。英語だけどネットで断片的な情報集めるよりは全然楽。図もわかりやすいし、2章まで読めば仕組みと簡単な使い方は覚えられると思う。同サイトには日本語ページも作成されつつあるようだったけど、こちらは解説にまで至ってなかった。
Flexファイルサイズでかすぎ
Tags: ActionScript, Flex
Apache + Rails + Flex: FlashVarsを使う場合でレーダーチャートをFlexで作ったらファイルサイズ236Kb、同じものをActionScriptファイルのみで作ったら4Kbだったので驚愕。ためしに以下のような空のFlexアプリケーションを作ってみた。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="200" height="200" backgroundColor="#FFFFFF"> </mx:Application>
ファイルサイズ148Kbだった。こんな感じ。

同じものをActionScriptクラスで作ったら4Kbだった。差ありすぎじゃねー。
package { import flash.display.GradientType; import flash.display.Sprite; import flash.geom.Matrix; [SWF(width="200",height="200")] public class GradientFlash extends Sprite{ public function GradientFlash(){ var w:Number = this.stage.stageWidth; var h:Number = this.stage.stageHeight; var mat:Matrix = new Matrix(); mat.createGradientBox(w,h,Math.PI/2); var colors:Array = [0xFFFFFF, 0xDDDDDD]; var alphas:Array = [1,1]; var ratios:Array = [0x00,0xFF]; graphics.beginGradientFill(GradientType.LINEAR, colors,alphas,ratios,mat); graphics.drawRect(0,0,w,h); graphics.endFill(); } } }
おまけ
Flexで背景のグラディエントをなくす場合は以下の通り。
backgroundGradientColors="[#FFFFFF,#FFFFFF]"
SVNリポジトリを使ってRailsアプリケーションを安全に開発 at RailsPlayground.com
注意: 書かないと確実に忘れてミスりそうなのでメモ。当方SVN初心者。もっと手順の少ない楽な方法があれば是非教えてください。
やりたいこと
ローカルのRailsアプリケーションの変更をリモートサーバー上のRailsアプリケーションに「安全に」反映させたい。
Railsの性質上、ローカル - リモートサーバー間の直接の書き換えは超絶危険なので、中継地点としてSVNリポジトリを利用する。これにより、ローカルの変更はSVNリポジトリへ別(サブ)バージョンとして保管、実際のリモートサーバー上での運営はSVNリポジトリから適切なバージョンを拾ってくることで反映させる。つまり手元で変ちくりんな修正を行ってしまっても古いバージョンが保管されているのでリセット可能。かなり大胆なweb運営ができる。
簡単な環境説明
RailsPlayground.comは名前の通り、Ruby on Railsアプリケーションが簡単に使えるのが売りの海外のレンタルサーバー。例えばさくらインターネットだとRailsは手動でインストールできるけど、FastCGIが使えないので動作が遅いらしい(例えばがんちゃんのブログ: さくらのレンタルサーバでRuby on Railsをうごかしてみた…らかなり遅いかも…)。日本国内だとRailsが標準装備のレンタルサーバーは値段がはってしまうようなので、月額$5のRailsPlaygroundを借りてみた。海外だと他にもBluehostやTextdrive(現Joyent?)等が有名みたいだけど少し高い。
RailsPlayGroundの$5プランは破格なんだけど使用できるサーバーがApacheオンリーのようなので、Lighttpd等を複数使いたい場合は上のプランを選ばないといけない。あとRailsPlayGroundは契約フォームまわりがすっごくうさんくさかった。User IDが6文字までとか、いきなりクレジットカード番号いれさせられたり、なんか諸々。性能やら手続きやらについてはRailsPlaygroundの申し込み方法 (Ruby on Rails)あたりがわかりやすいかも。サブドメイン、データベースが作成し放題なので、例えばxreaみたいにスパムサイトの温床になりそうなので少し気がかりだけど、今のところ快適に動作している。
SVNリポジトリ設定
- RailsPlaygroundにSVNで管理したい旨をメールで要請(要請しないと使えない)。24時間サポートらしくすぐ専用のURLが送られてくる。アクセス先(IDとPW入力)でリポジトリスペースとアカウント作成などを行う。ここではリポジトリ名をrailsappとしておく。SVNリポジトリの保管先はこんな感じになる。
http://YOURACCOUNT.svnrepository.com/svn/railsapp
YOURACCOUNT部分はサーバー管理者が適当に与えてくれる。
- RailsPlaygroundサーバースペースにRailsアプリケーション(以下railsapp)を作成(ドキュメントルートより上)。理由はrailsappを作成する際、Apacheで動作するよう.htaccessをRailsが勝手に作成してくれるから。Apacheでちゃんと動作するように.htaccessを自分で作成できるならこの手順は不要。Apacheサーバーで運営する予定のない人にも不要。
- 先ほど作成したrailsappプロジェクト全部をローカルに保存。実際に欲しいのは.htaccessファイル「のみ」なので、事前にローカルで作成したRailsアプリケーション内に.htaccessだけコピーしてもってきてもよいと思う。
- ローカルのrailsappプロジェクト全部をSVNリポジトリにインポート。ローカルのrailsappディレクトリ内より
svn import -m "MESSAGE" . http://YOURACCOUNT.svnrepository.com/svn/railsapp
MESSAGE部分はお好みで(”First import”など)。
- インポートが完了したら手元にSVNリポジトリからのコピーを持ってこないといけない(リポジトリとシンクロさせるため)。とりあえずローカルのrailsappを別ディレクトリに移すなどする(ここではrailsappディレクトリと同じ階層にrails_backとして保存)。
mv /path/to/railsapp /path/to/railsapp_back
- あらためてリポジトリよりチェックアウト。コピーしたい場所より
svn co http://YOURACCOUNT.svnrepository.com/svn/railsapp
これでSVNリポジトリrailsappとローカルrailsappがシンクロする。ローカルrailsappを変更してSVNリポジトリへコミット(ci)すると別バージョンとして保存されるはず。
- 次にSVNリポジトリのrailsappをRailsPlaygroundのリモートサーバー上へコピーする。これも基本はローカル - SVNリポジトリの場合と同じように、SVNリポジトリ - リモートサーバー間でシンクロさせてやる必要がある。RailsPlaygroundの自分のドメインへアクセス、sshで
ssh YOURID@YOURDOMAIN.COM
YOURIDとYOURDOMAIN.COMはRailsPlaygroundの契約IDと設定ドメイン。
- ドキュメントルートより上にSVNリポジトリをチェックアウト。手順2ですでにrailsappを作成している場合は全部削除。かわりにSVNリポジトリより呼び出す。
svn co http://YOURACCOUNT.svnrepository.com/svn/railsapp
これでリモートサーバーとSVNリポジトリがシンクロする。必要なときに必要なバージョンをSVNリポジトリから拾ってくればよい。バージョンの選び方等はSubversionの使い方を参照ください。
- RailsPlaygroundサーバー上railsapp/publicのシンボリックリンクをドキュメントルート配下に設置。例えば
ln -s ~/railsapp/public ~/public_html/railsapp
これでhttp://YOURDOMAIN.COM/railsappにアクセスするとSVNリポジトリの内容を反映したRailsアプリケーションが表示されるはず。Railsアプリケーションをドキュメントルート以下に配置すると色々不都合があるためこのような回りくどい処理を行う。
基本の作業手順
ローカル - SVNリポジトリ、SVNリポジトリ - リモートサーバーがシンクロしていることが前提。
svn co http://YOURACCOUNT.svnrepository.com/svn/railsapp
svn ci -m "MESSAGE" http://YOURACCOUNT.svnrepository.com/svn/railsapp
ssh YOURID@YOURDOMAIN.COM
svn co http://YOURACCOUNT.svnrepository.com/svn/railsapp

