[sinatra] sinatraでHello World

Webアプリがつくりたいわけ

かなり以前、まだAirH”(w のコンパクトフラッシュサイズカードとCASIOPEAというWindowsCEのPDAでゔぃゔぃ言わせていた頃、自宅WebサーバーをDDNSで公開してWeb家計簿をPHPで作ったりしていました。
でも、PHPを勉強しながらだったので、お世辞にも拡張性があるものでもなく、現在の我が家の家計簿はご自宅ファイルサーバー上のxlsxファイルです。

Sqlite3とWebアプリになんとかできないもんかと思っていたんですけど、以前から名前だけ知ってるsinatraが簡単そう。Railsは何回も挫折しています。だってなんか仕様が大きくて、いつまでたっても習得できない…..(言い訳

さて、そんなわけでsinatraです。あまり、邦訳書籍を見かけないですけど。簡易Rails?みたいなかんじ?

sinatraのインストール

まず、sinatraのインストールです。前提としてrubyをインストールします。私の環境がMacなので、他の環境の方は適宜手順を検索してくだされ。

Rubyのインストール

参考にした情報ではHomebrewでRubyをインストールする手順になってました。
(その前にHomebrewをインストールしないとですよね…)


$ brew install ruby

sinatraのインストール

つづいてgemでsinatraをインストールです。実はここでnative extentionのコンパイルが走ったりするのでですね、私はインストールに苦しみました….(下の手順だと簡単そうですよね。)


$ gem install sinatra

テストアプリの作成

テストアプリを作りましょう。 ​Hello Sinatra を表示するやつです。


require 'sinatra'

get '/hello' do

  "Hello Sinatra!"

end

実行だ!

rubyコマンドで起動

なんとrubyコマンドでさっきのテストアプリを起動するだけで、内部Webサーバーが起動します。すげー。


$ ruby hello.rb

ブラウザから確認

ブラウザから http://localhost:4567/hello へアクセスして動作確認してみてください。以下のようなメッセージが出ます!

スクリーンショット 2017-10-17 23.12.24

広告

HudsonでRuby(というか、rakeとRCov)

HudsonでRuby(というか、rakeとRCov)を動かしてみたので手順をメモします。
前提

  • 使用したツールのバージョン
    • TracLightning 2.0.9 ( w/Hudson)
    • ActiveScriptRuby 1.8.6-p114(http://arton.hp.infoseek.co.jp/indexj.html)
    • rake 0.8.1(gemでインストール)
    • RSpec 1.1.4(gemでインストール)
    • rcov 0.8.1.2(gemでインストール)
    • ☆rubyのバージョン(1.8.6)とrcovのバージョン(
      0.8.1.2)に注意が必要です。ruby metricsプラグインはHTML解析をしているようでちょっとしたタグ出力の違いで よくコケました。(>_<)。
  • SubversionリポジトリにRubyのプロジェクトが登録済み
    • プロジェクト直下にRakefileが配置されている
    • Rakefileのタスクとして”examples2″があり、RSpecの全テストを実施した後、rcovを蹴ってカバレッジをプロジェクト直下の coverageディレクトリへ作成する

続きを読む »

CruiseControl.rbはポーリング型

CIツールは、SubversionなどのSCMのリポジトリにソースがチェックインされたタイミングで、ビルドしてテスト…というのが「継続的結合」たる動作なわけですが…
これには2つのやり方があって…

  1. チェックイン時、SCM側のトリガーでCIをキックしてビルドスタート
  2. CI側から定期的にSCMリポジトリをポーリングして変更をキャッチしたらビルドスタート

1.の方法はSunの川口耕介さんが作ったHudson(http://hudson.dev.java.net/)があります。TracLightningに同梱されています。
(最近までsunで作られたものなので、Java専用だと思い込んでいたのは私です…..RubyでHudsonの記事は別エントリーで…)
CruiseControl.rbは2.のポーリング型になります。
少数のプロジェクトをCIするなら、それほどシステムへの負荷は高くないですが、多数のまた大規模なプロジェクトを監視して…となると負荷が高そうです。
CIサーバーの比較表が、CruiseControlの会社にありました。
http://confluence.public.thoughtworks.org/display/CC/CI%20Feature%20Matrix
Hudsonと比較すると、CruiseControl.rbは純粋な(狭義の??)CIに徹している感じで、多機能ではないですがサーバー自体は軽い印象です。カスタマイズはプロジェクトごとに持っている”cruise_config.rb”というファイルに記述していきます。
設定ファイルっぽいけど、実はRubyのソースなので柔軟なカスタマイズが可能な模様。
HudsonはWebインターフェースが充実していて、設定はWebから全部できます。
また多彩なプラグインも公開されていて、なんとrakeプラグイン、ruby metricsプラグインもあってRubyの開発でもOK!!! notificationとしても標準でE-MAILを持っていますし、各種IMに対応している模様。
表示もリッチで、プラグインによる拡張性もありありって感じですね。
もっと小難しいのではないかと思って敬遠していて損した気分です。
というわけで、今後はCruiseControl.rbはちょっとお休みして、HudsonでRubyしていく状況をポストしていきます。
(CruiseControl.rbをあきらめたわけでは…でわ…でわ…..)

CruiseControl.rbでハマり・解決編

解決してからだいぶ時間がたってしまいましたが、「CruiseControl.rbでハマり・解決編」です。
原因は解凍するときのアーカイバーでした。
まぬけすぎる原因でちょっと恥ずかしいのですが、最近常用しているのはLhaplusなのです。
パスワードつきzipも解凍できるし、エクスプローラー拡張で入ってくれるので便利至極なわけですがCruiseControl.rbのtar+gzipの解凍が正しくできなかった模様です。
ubuntu Linuxで普通にtarで解凍してみたところサックリ動いたので、アーカイバだなと気づいたわけで….(ちょっと気づくの遅い….)
こちらのtar.exe+tar32.dllで解凍したところ何の問題もなく動きましたとさ。うががー。
http://www.din.or.jp/~shimaden/download/index.html
『しまでんのソフトウェア・ダウンロード・コーナー』
http://www.madobe.net/archiver/index.html
『統合アーカイバプロジェクト』

CruiseControl.rbでハマりing

CruiseControl.rbでハマりingであるます。
RubyなCIツールで「カンタン3STEP」がうたい文句みたいなんだけど、わたしゃダメ。
たぶんちょっとしたことで、「ふつー」のことがわかってないんだろう。
ActiveScriptRuby(Ruby v.1.8.7)の環境でNG。svnのコマンドライン版もちゃんと入ってるんだけどなぁ。
そもそも、最初にSubversionリポジトリからプロジェクトをaddするところでエラーとなるのだ。
ターゲットにしているsvnリポジトリもオレオレ証明書でhttpsだったりするので、これはちょっとクリーンな環境をいっちょ作ってみようとオモタ。
で、クリーンな環境をつくって見ようと、3連休(といっても私にとっては土日だったわけだが)にVMwareServerにWindowsのきれいな環境を作って、Rubyもちょっと前のバージョンを単品で入れてgemだのzlib.dllだのと手でシコシコ入れて環境を作ったのに.....
svnもローカルにインスコしてfile:///でアクセスしちゃうぞ、ぐらいの勢いだったのに....
結果はいっしょで、なんかプロジェクトaddで得体のしれないエラーが出るのだ。
なんか内包されているRails関係のエラーっぽいので、なんか環境問題クサイのだよなぁ。
ああ、スキルがまだ足りん...
---
追記
 この記事をエントリーしたあと、いろいろ見てたらみんなさして苦労してない。
 *Unixな環境でトライすべきだろうかなぁ。TracLightningで怠惰な生活をしていて、
*Unixな環境にアタックする気力が少なくなっているわけだが....
 WindowsでCIできると思うな!という神のお告げか?(でも、ちゃんとCruiseControl.rbには
cruise.cmdっていうイカにもWindowsで動きそうなバッチファイルがついてくるんだけど…)