ラベル Ruby on Rails の投稿を表示しています。 すべての投稿を表示
ラベル Ruby on Rails の投稿を表示しています。 すべての投稿を表示

2013/06/12

Ruby on Rails 新規アプリケーションの作成

今更ながらRuby on Rails 新規アプリケーションの作成方法についての説明です。
Ruby on Rails で新規アプリケーションを作成するには、rails newコマンドを利用します。
書式は以下の通りです。

 rails new APP_PATH [options]

APP_PATHはrailsアプリケーションのルートディレクトリのパス(相対パスでの可)です。
optionsには、以下のオプションが指定可能です。
カテゴリ オプション 説明
基本オプション -r, [--ruby=PATH] Rubyバイナリのパスを指定する。
-b, [--builder=BUILDER] アプリケーションビルダーのパスを指定する。(ファイルシステムのパスまたはURL)
-m, [--template=TEMPLATE] アプリケーションテンプレートのパスを指定する。(ファイルシステムのパスまたはURL)
[--skip-gemfile] Gemfileの作成をスキップします。
[--skip-bundle] bundle installをスキップします。gemを追加定義するのでよく使います。
-G, [--skip-git] .gitignoreファイルの作成をスキップします。
-O, [--skip-active-record] Active Record ファイルの作成をスキップします。
-S, [--skip-sprockets] Skip Sprockets files
-d, [--database=DATABASE] デフォルトのsqlite3以外のデータベースを利用する場合に指定します。指定したデータベースの設定がコンフィグに反映されます。(指定可能なデータgベース:mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
-j, [--javascript=JAVASCRIPT] デフォルトのjQuery以外のJavaScriptライブラリを利用する場合に指定します。指定可能なライブラリは要調査。
-J, [--skip-javascript] JavaScriptライブラリの設定をスキップします。
[--dev] Setup the application with Gemfile pointing to your Rails checkout
[--edge] Gemfile に設定するRailsのリポジトリを指定します。
-T, [--skip-test-unit] Skip Test::Unit files
[--old-style-hash] Force using old style hash (:foo => 'bar') on Ruby >= 1.9
ランタイムオプション -f, [--force] すでにファイルが存在する場合に上書きする。
-p, [--pretend] Run but do not make any changes
-q, [--quiet] Suppress status output
-s, [--skip] ファイルが既に存在する場合は作成をスキップする。

2013/04/02

Mongrelの利用

Ruby1.9系でMongrelを利用する方法です。
確認したのは、バージョン1.9.3p125です。

Gemfileに以下を追記します。

gem "mongrel", ">= 1.2.0.pre2"

bundlerでインストールします。
 > bundle install

動作確認して終了です。

 >rails s mongrel
 => Booting Mongrel
 => Rails 3.2.13 application starting in development on http://0.0.0.0:3000
 => Call with -d to detach
 => Ctrl-C to shutdown server
 Connecting to database specified by database.yml

2013/04/01

Rakeコマンド

rakeコマンドはJavaでいうところのAntのようなビルドツールです。Antと同様にタスクという単位で処理を実行し、タスクの依存関係を定義することもできます。
rakeコマンドは、コマンド実行時にカレントディレクトリにあるRakefileを読み込んで処理を行います。(Antがbuild.xmlを読み込んで処理を行うのと同様です。)大きく違うのはデフォルトのタスクが存在するのと、独自にタスクを定義する場合は、Rakefileに直接書くのではなくlib/tasks以下に.rakeという拡張子を付けたファイルを配置し、そこにタスクを定義する点の2点です。

タスクの確認方法

デフォルトの状態でたくさんのタスクが定義されているので、どんなタスクが定義されているか確認する手段を理解しておくのは重要です。
rakeコマンドは以下のオプションを指定することにより定義済みのタスクを確認することができます。

 > rake --tasks (または -T)
 rake about              # List versions of all Rails frameworks and the env...
 rake assets:clean       # Remove compiled assets
 rake assets:precompile  # Compile all the assets named in config.assets.pre...
 rake db:create          # Create the database from DATABASE_URL or config/d...
 rake db:drop            # Drops the database using DATABASE_URL or the curr...
 rake db:fixtures:load   # Load fixtures into the current environment's data...
 rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE...
 rake db:migrate:status  # Display status of migrations
 rake db:rollback        # Rolls the schema back to the previous version (sp...
 rake db:schema:dump     # Create a db/schema.rb file that can be portably u...
 rake db:schema:load     # Load a schema.rb file into the database
 rake db:seed            # Load the seed data from db/seeds.rb
 rake db:setup           # Create the database, load the schema, and initial...
 rake db:structure:dump  # Dump the database structure to db/structure.sql. ...
 rake db:version         # Retrieves the current schema version number
 rake doc:app            # Generate docs for the app -- also available doc:r...
 rake log:clear          # Truncates all *.log files in log/ to zero bytes
 rake middleware         # Prints out your Rack middleware stack
 rake notes              # Enumerate all annotations (use notes:optimize, :f...
 rake notes:custom       # Enumerate a custom annotation, specify with ANNOT...
 rake rails:template     # Applies the template supplied by LOCATION=(/path/...
 rake rails:update       # Update configs and some other initially generated...
 rake routes             # Print out all defined routes in match order, with...
 rake secret             # Generate a cryptographically secure secret key (t...
 rake stats              # Report code statistics (KLOCs, etc) from the appl...
 rake test               # Runs test:units, test:functionals, test:integrati...
 rake test:recent        # Run tests for {:recent=>"test:prepare"} / Test re...
 rake test:single        # Run tests for {:single=>"test:prepare"}
 rake test:uncommitted   # Run tests for {:uncommitted=>"test:prepare"} / Te...
 rake time:zones:all     # Displays all time zones, also available: time:zon...
 rake tmp:clear          # Clear session, cache, and socket files from tmp/ ...
 rake tmp:create         # Creates tmp directories for sessions, cache, sock...

データベース関連のタスク

タスクの一覧を見ると分かりますが、データベース関連のタスクにはdb:というプレフィックスが定義されています。これらのタスクを利用してデータベース関連の操作を行います。

マイグレーション

マイグレーションを実行するには db:migrateタスクを実行します。
 > rake db:migrate

マイグレーションの状態確認

 > rake db:migrate:status

ロールバック

データベースの状態を1世代前にロールバックするには db:rollback タスクを実行します。
 > rake db:rollback
指定した世代分ロールバックするには STEP オプションを指定します。
以下は5世代前を指定する例です。
 > rake db:rollback STEP=5

ルーティング関連のタスク

Railsではルーティングをconfig/routes.rbに定義します。ファイルを参照することにより定義したルーティング情報を確認することはできますが、直観的に理解するにはrakeコマンドを利用した方が賢明です。
 > rake routes

2013/03/31

Ruby on Rails 開発環境構築

対象のバージョン

今回対象にするバージョンは以下の通りです。
  • Ruby 1.9.3
  • Rails 3.2.13

対象の環境

対象の環境は Windows 7 です。

Rubyのインストール

バイナリはRubyInstaller.orgが配布しているものを使います。

Railsの国際化対応

環境

環境は以下を前提にしています。

  • Ruby : 1.9.3p125
  • Rails : 3.2.13

概要

国際化対応はi18nというgemにより実現されます。デフォルトの状態でBundlerにより導入されるのでインストールの必要はありません。

手順

手順といっても国際化対応の機能はデフォルトで組み込まれています。どういう仕様にしたいかによってやることは異なりますのでご注意を!

デフォルトロケールの設定

デフォルトロケールを日本語に設定します。
対象のファイルはconfig/application.rbです。
以下の通り変更します。

 config.i18n.default_locale = 'ja'


リソースファイルの構成

リソースはYAMLで定義し、デフォルトではconfig/locales直下に配置することにより利用可能となります。以下のような形で配置していきます。
  • en.yml
  • ja.yml
  • translation_ja.yml
好みの問題ですが、個人的には1つのファイルで管理するリソースは少なくカテゴライズされて定義されていた方が分かりやすいので以下のように定義しています。


locales
  |-- defaults <-- デフォルトリソースファイルを配置
  |       |-- en.yml 
  |       |-- ja.yml
  |-- models <-- モデルとその属性リソースを定義したファイルを配置
  |       |-- defaults
  |       |      |-- en.yml
  |       |      |-- ja.yml
  |       |-- bookshelf
  |       |      |-- en.yml
  |       |      |-- ja.yml
  |       |-- book
  |       |      |-- en.yml
  |       |      |-- ja.yml
  |-- views <-- 画面系リソースを定義したファイルを配置
          |-- defaults
          |      |-- en.yml
          |      |-- ja.yml
          |-- bookshelf
          |      |-- en.yml
          |      |-- ja.yml
          |-- book
                 |-- en.yml
                 |-- ja.yml 
 

ただし、上記の通りリソースファイルを構成してもデフォルトの状態では読み込んでくれません。そこでconfig/application.rbに以下を追加します。

 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]

第3引数のワイルドカード「**」により再帰的にリソースが読み込まれるようになります。

デフォルトリソースファイルの作成

デフォルトリソースファイルはGitHubで公開されているものを利用させていただきます。
こちらから「https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml」ダウンロードさせて頂いた配置しましょう。

Rails Scaffold

generateしたらやること

 # rake db:migrate

config/database.ymlを編集
 development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  encoding: utf8 <-- 追記
  timeout: 5000

public/index.htmlを削除

config/routes.rbを編集

Bookshelf::Application.routes.draw do
  root :to => 'books#index' <-- 追記
  resources :books
end

 # rake routes
      root        /                         books#index <-- これを確認
    books GET    /books(.:format)          books#index
          POST   /books(.:format)          books#create
 new_book GET    /books/new(.:format)      books#new
edit_book GET    /books/:id/edit(.:format) books#edit
     book GET    /books/:id(.:format)      books#show
          PUT    /books/:id(.:format)      books#update
          DELETE /books/:id(.:format)      books#destroy