railsアプリの立ち上げまで簡単にメモ

rvmのインストールに続き、アプリを取り急ぎ立ち上げるまでを簡単にメモ。まずフォルダを作りGemfileを準備する。

$ rvm use 1.9.3
$ mkdir myapp
$ cd myapp
$ vim Gemfile

Gemfileの内容はsourceとrailsのみを記述する。

source "http://rubygems.org/"
gem "rails", "3.2.0"

bundleから各種gemをインストールする。その際に–path vendor/bundleを付けることによって、各アプリ毎にgemを保存する(vendor/bundle以下)。

$ bundle install --path vendor/bundle
Fetching source index for http://rubygems.org/
Installing rake (0.9.2.2)
・・・省略
Installing rails (3.2.0)
Your bundle is complete! It was installed into ./vendor/bundle

railsコマンドを実行。その際にGemfileの上書きに対するアラートが出るが、そのまま実行する。

$ bundle exec rails new .
省略
Overwrite /path/to/book/Gemfile? (enter "h" for help) [Ynaqdh] Y
省略

バージョンによるものなのか不明だが、下記エラーが表示された場合にはtherubyracerが足りないので、上書きしたGemfileにgem ‘therubyracer’を追加して再度bundle install –path vendor/bundleを実行する。

/usr/local/rvm/gems/ruby-1.9.3-p125/gems/bundler-1.0.22/lib/bundler/resolver.rb:280:in `resolve': Could not find gem 'jquery-rails (>= 0) ruby' in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound)

memberテーブルにnameとemailカラムを作成しつつscaffold。

$ bundle exec rails g scaffold member name:string email:string

migrate後にテスト。

$ bundle exec rake db:migrate
$ bundle exec rake test

DBのリセット。

$ bundle exec rake db:migrate:reset
$ bundle exec rake db:seed

サーバーの立ち上げ。

$ bundle exec rails s
=> Booting WEBrick
=> Rails 3.2.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-02-25 20:53:09] INFO  WEBrick 1.3.1
[2012-02-25 20:53:09] INFO  ruby 1.9.3 (2012-02-16) [i686-linux]
[2012-02-25 20:53:09] INFO  WEBrick::HTTPServer#start: pid=27380 port=3000

ウェブサーバーから下記アドレスにアクセス。

http://192.168.1.72:3000/members/

明日でおしまい

明日で長年勤めさせていただいた社会人学校の講師業が終了する。通常の仕事とは別であったため、主に土曜日に準備にあたり日曜日に教壇に立つという日々で、それが当たり前のように感じるほど。そして、来週からの週休二日生活に一抹の不安を覚える。

学校では二十歳前の学生さんから年配の方まで本当に多くの方に教えさせていただいた。今でこそ授業の組み立てや資料づくりなどをある程度はスムースに出来るようになったけれども、始めた当時を思い返してみるとそれはもう酷いもので、よく嫌にならずについてきてくれたなと思う。当時の生徒さんと時々お会いすることがあって、「先生(私)に教わって良かった」などという有難いお言葉をいただくが、むしろこちらから謝りたい気持ち。

とはいえ、それまで他人にものを教えたことも/教わったこともなく、まして人前で話すことが得意ではなかったこともあって、いろいろと試行錯誤をしながらの授業だった。特に、他人から教わった経験があまりに少ないことが気がかりで、どんな言葉や言い回しが分かりやすいのか、どんな間をとったら良いのか、表情は、声のトーンは、と考えたらきりがない。各種書籍や業界のセミナーやカンファレンス、講演会などに出かけていき、少しずつ勉強をしていった。

そんな中で最も心がけたことは、ある物事を説明する場合にそれを自身が理解できた瞬間を思い出して、その前後のプロセスと共に説明をすること。「理解」の捉え方は人によって千差万別だけれど、それでもそれは物事の抽象度を高めていったその極限、もしくはその過程の一部分であって、かつ演繹が可能な考え方を手に入れることに変わりはないと思う。言葉にしてみれば簡単なことでも、講座の中で生徒さんの考え方をその方向に導いていくことは本当に難しかった。それに、生徒さんの来校の目的によっても方向性を変えなければならないし、そこのところの見極めには非常に悩んだ。ともかく、僕の思うところが少しでも伝わっていたら嬉しいな。

また、講師/生徒としての立場を超えて、個人的に友人としてお付き合いをさせていただいている方も何人かいて、実のところでそんなつながりを生み出してくれる場所が無くなってしまうことが最も寂しい。自分とは異なる年代、考え方を持つ方々とのお話は非常に楽しく、私がむしろ生徒として勉強をさせていただいていたようなものだから。

つらつらと思ったことを文章にしてみた。なかなかうまくまとまらないけれど、最後の準備をしながらこんなことを考えていた。

rvmをsudoを付けて(マルチユーザーとして)インストールする

rvmを管理者としてインストールしてみる(続きrubyも)。こちらのマニュアルのMulti-Userの項目を参考に進める。

$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

インストール自体はそれほどかからずに完了する。Single-Userの場合は、それぞれのホームディレクトリ以下に、Multi-Userの場合は/usr/local/rvm以下にインストールされる。また、インストール後は再ログインをする。

Once you have added the users you want to be able to use RVM to the rvm group, those users MUST log out and back in to gain rvm group membership because group memberships are only evaluated by the operating system at initial login time.

また、その後の関連コマンドについては下記のように入力する。sudo rvm -vとするとsudo: rvm: command not foundと怒られる。

$ sudo rvm -v

ではなく

$rvmsudo rvm -v

次にrubyをインストールする。まず、インストールに当たっての必要要件を確認する。

$ rvmsudo rvm requirements
省略

Additional Dependencies:
# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:
  ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

省略

このうち、For Rubyの部分を参考にして足りないライブラリをインストールする。また、rvmsudo rvm list knownによってインストール可能なrubyのバージョン等を確認する。続いて該当バージョンをインストール。

$ rvmsudo rvm list known
$ rvmsudo rvm install 1.9.3
省略
Install of ruby-1.9.3-p125 - #complete

最後にパスを通して、また通常使用するバージョンを指定する。

$ echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
$ rvm use 1.9.3 --default
Using /usr/local/rvm/gems/ruby-1.9.3-p125

rubyの削除は次のコマンドで行う

//ruby削除(ソースコードも削除する)
$rvmsudo rvm remove 1.9.3
//ruby削除(ソースコードは削除しない)
$rvmsudo rvm uninstall 1.9.3

マップを読み込んでから印刷ダイアログを自動的に表示する

次の流れで印刷をしたかったが、印刷ダイアログを出力(window.print())するタイミングによってページに含まれるGoogle Mapsが表示されないことがあった。おそらく、window.print()をloadScript()内の最後に書いていたので、非同期で読み込まれるGoogle Mapsの表示を待たずに印刷ダイアログを出力していたのだと思う。

  1. ページの「印刷」ボタンをクリック
  2. 印刷用にページを再構築(データを再度抽出し、Google Mapsを含めてページを作る)
  3. 印刷ダイアログを自動的に表示

そこで、google.maps.event.addListenerを利用してmapがidle状態に変化したら(つまり読み込みが完了したら)印刷ダイアログを表示するように変更したところ期待通りに動いた。当たり前といえば当たり前なんだけど。

サンプルはこちら

[PHP]





テスト


[/PHP]