メモの初めに
- Railsアプリケーションの基本的な初期状態を作りたい。
- bundlerでアプリケーションごとに環境作って運用したい。
- passengerを使ってapache越しにアクセスできるようにしたい(アプリケーションの起動をhttpd startに任せたい)。
構築
インストール
Ruby、RubyGemsのインストールは省略。
sudo ruby --version
ができるように ~/.bashrc に以下を追加(すでにできてるなら不要)。
alias sudo='sudo env PATH=$PATH'
bundlerをインストール。
sudo gem install bundler
アプリのディレクトリを作成してinit。
mkdir /var/www/helloworld
cd /var/www/helloworld
bundle init
生成されたGemfileを編集。
# A sample Gemfile
source "https://rubygems.org"
gem "rails", "3.2.13"
このディレクトリ以下にインストール。
bundle install --path vendor/bundle
bundle exec rails new .
途中、Gemfileを上書きするか聞いてくるので気にせず上書き。
execjsなども追加して最終的にGemfileは以下のようになる。
source 'https://rubygems.org'
gem 'rails', '3.2.13'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'execjs'
gem 'therubyracer'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
編集後もう一回インストールして、コントローラーなどを生成する。
そしてWEBrickサーバー起動。
bundle install --path vendor/bundle
bundle exec rails generate controller Hello index
bundle exec rails s
http://IPアドレス:3000/hello/index
でページが表示される。
アプリケーションに手を加える
メッセージの表示。
以下のようにテキストを出力できる。
class HelloController < ApplicationController
def index
render text: "Hello World!"
end
end
また、「/hello/to/ミスター」のようなパスにアクセスした際に、「Hello ミスター !」とビューファイルを使用して出力する場合。
ルートを設定し、
Hellowrold::Application.routes.draw do
get "hello/index"
get "hello/to/:name" => "hello#to"
end
ビューに渡すメッセージを登録し、
class HelloController < ApplicationController
def index
render text: "Hello World!"
end
def to
@message = "Hello #{params[:name]} !"
end
end
ビューで出力する。
<p><%= @message.html_safe %></p>
app/views/hello/to.html.erb は、レイアウトファイルである app/views/layouts/application.html.erb の中に組み込まれる形で出力される。
passengerを使う
passengerを使ってapache越しにアクセスできるようにする。
(libcurlやらg++やらhttpd-develやら必要な場合は適宜インストール、省略)
sudo gem install passenger
sudo passenger-install-apache2-module
vi /etc/httpd/conf.d/passenger.conf
内容は次のようになる。
LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.5/libout/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.5
PassengerDefaultRuby /usr/local/bin/ruby
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/hellowrold/public
ServerName ホスト
ErrorLog logs/helloworld-error_log
CustomLog logs/helloworld-access_log common
RackEnv development
RackBaseURI /
SetEnv GEM_HOME /var/www/hellowrold/vendor/bundle/ruby/2.0.0
<Directory "/var/www/hellowrold/public">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
LoadModuleの行からPassengerDefaultRubyの行は、passenger-install-apache2-module
の最後に出てくる情報を使う。
http://ホスト/hello/index
http://ホスト/hello/to/YOURNAME
でアクセスできる。