Scaffoldとは、データベースのテーブルを操作(カラム作ったり、消したり)するアプリをコマンドで作成できる仕組みです。
手順
①プロジェクトを作って、Railsをセットアップします。
②Scaffoldコマンドでアプリを作ります。
③rakeコマンドでDBをセットアップします。
④warblerでアプリをWarファイル化します。
⑤Tomcatに乗せて動かします。
⑥動かないので、ちょちょっといじって動くようにします。
①プロジェクトを作って、Railsをセットアップします。
プロジェクト名はScaffoldInspectとしました。
・ターミナルやコマンドラインツールで、Eclipseのワークスペースに行きます。デフォルトではユーザのホームディレクトリのworkspaceという名前のディレクトリです。そこで、Railsコマンドを打ちます。
rails new {プロジェクト名}
これで、作ったプロジェクトにRailsがセットアップされます。
②Scaffoldコマンドでアプリを作ります。
cd {プロジェクト名}
rails generate scaffold user name:string tel:integer introduction:string
rails generate scaffoldがScaffoldでアプリを作るコマンド。それ以降はデータの型定義です。
③rakeコマンドでDBをセットアップします。
rake RAILS_ENV=production db:migrate
これでDBにテーブルが作られます。
プロジェクト中のdb/production.sqlite3の中を覗くと、usersというそれっぽいテーブルが作られているのがわかります。
④warblerでアプリをWarファイル化
warble config
warble war
これで{プロジェクト名}.warというwarファイルが作成されます。
作ったwarファイルを{Tomcatのインストールフォルダ}/webappにコピーします。
⑥動かないので、ちょちょっといじって動くようにします。
これで動くぜ!と思って、http://localhost:8080/sm/users にアクセスすると
2つの理由で動きません。
We're sorry, but something went wrong.
なんて言って怒られる。この理由は
・dbファイルがコピーされない。
・scssがコンパイルされてない。
さて、解決します。
そのまま動かそうとすると、まずはlocalhost.logに以下のようなエラーが出ます。
ActiveRecord::JDBCError (The driver encountered an unknown error: path to '/Applications/apache-tomcat-7.0.32/webapps/{プロジェクト名}/WEB-INF/db/production.sqlite3': '/Applications/apache-tomcat-7.0.32/webapps/{プロジェクト名}/WEB-INF/db' does not exist):
ふむ。確かにdbファイルが無い。
しょうがないので、作ります。
mkdir /Applications/apache-tomcat-7.0.32/webapps/{プロジェクト名}/WEB-INF/db
cp db/production.sqlite3 /Applications/apache-tomcat-7.0.32/webapps/{プロジェクト名}/WEB-INF/db/
この場所だと再デプロイすると消えちゃうので、運用したい場合は別の場所にDBおいたほうがいいですね。
さてTomcatを再起動後、再度アクセスするとエラーが変わります。
ActionView::Template::Error (application.css isn't precompiled):
scssがコンパイルされていないんでしょう。
で、Tomcatを再起動。再度、http://localhost:8080/sm/users にアクセスすると
こんな画面が出たら成功! New Userでデータを作ったり弄ったりできます。
簡単だなぁ。次回以降、Railsで何をやっているかもうちょっと深掘りしていきたいと考えています。


0 件のコメント:
コメントを投稿