Ruby on Rails 4 環境構築メモ

Ruby on Rails 4 の環境を構築するときにすべきことのメモです。OSは CentOS 6.5です。必要なYumパッケージは予めインストールされているものとします。

◇rbenv のインストール

$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source .bashrc 
$ exec $SHELL
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

◇rbenv でインストールできる Ruby のバージョンを確認し、Rubyをインストール

$ rbenv install -l
$ rbenv install 2.0.0-p353
$ rbenv rehash

◇使用するRubyのバージョンを指定、バージョンを確認

$ rbenv global 2.0.0-p353
$ ruby -v

◇Bundler と Rails をインストール

$ gem install bundler
$ gem install rails -v 4.0.2

◇Node.js をインストールするために nvm をインストール

$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh

◇利用できるNode.jsのバージョンを確認し、インストール、使用バージョンを指定

$ nvm ls-remote
$ nvm install v0.10.34
$ echo 'source ~/.nvm/nvm.sh; nvm use v0.10.34 > /dev/null' >> .bashrc
$ source .bashrc

◇新しいプロジェクトを作成する
Rails標準のテスト機能は利用せず、RSpecを利用する。
Ruby環境にGemがインストールされないようにする。

$ mkdir some_dir
$ cd some_dir/
$ rails new new_project --skip-test-unit --skip-bundle
$ cd new_project

◇Gemfile を編集する

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.2'

gem 'sqlite3'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'rspec'
gem 'bootstrap-sass'
gem 'font-awesome-rails'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

◇.gitignore に次の設定を追加する

# Ignore other unneeded files.
vendor/bundle
doc/
*.swp
*~
*#
.project
.DS_Store
.idea

◇最初のbundleを実行する
初回はオプションに –path=vendor/bundle を必ず追加する。
この設定は .bundle/config に書き込まれるので2回目以降は不要。

$ bundle install --path=vendor/bundle

◇Gitのローカルリポジトリを作成し、最初のコミットを行う

$ git init
$ git add .
$ git commit -m "Initialized git repository."

◇Bootstrapの設定を行う
– app/assets/stylesheets/application.css に次の行を挿入

 *= require bootstrap

– app/assets/stylesheets/application.css.scss に次の行を追加

@import 'bootstrap';

– app/assets/javascripts/applications.js に次の行を追加

//= require bootstrap

◇Railsの実行は “bundle exec” を使う。環境はdevelopmentを指定する。

$ RAILS_ENV=development bundle exec rails server

◇RailsアプリケーションにアクセスするURLは次の通り

http://localhost:3000/

GIS(地理情報システム)ベースのプロジェクトが完成

今日はほぼ1ヶ月ぶりの休日。何も予定を入れていません。
3月はシステム開発プロジェクト納品のため、休みなしに働いていました。
ようやく、昨日の土曜日、納めたシステムが全て稼働したのでホッとしました。

今回のシステムは、水道の施設を管理するためのもの。GIS(地理情報システム)をベースにしていて、給水栓、水道管、配水池などを全て地図上に表示します。需要家(家庭や企業など)や水道施設の詳細情報を表示したり、検索したりすることもできます。

これまでその町の水道局で使われていたシステムが、給水栓と水道管で別々のシステムに分かれていたり、地図を自由に拡大、縮小、移動ができなかったので、これらを一つに統合し、使い勝手を大きく向上させました。

他社が作った地図データを移行するには、データファイルを解析したり(.px という拡張子とか)、作図方法を解き明かしたり(CADか、平面直角座標系か)、新しい地図(公共測量による縮尺2500分の1の精細デジタル地形図)に合うように図形の位置を細かく修正したり、地図の切れ目で分かれた線を一つにつないだりと、膨大な作業が必要でした。

システム開発も、複数のシステムを一つのプロジェクトとして複数人が同時並行で開発するため、バージョン管理システムを使って各自の分散した開発作業を統合するようにしました。

今回、なんとか成果品を納めることができたのは、優秀なスタッフのおかげです。開発に携わっていただいた皆さん、本当におつかれさまでした。ありがとうございます。

LISTERは危険!

ListerというiPhoneと連動するクラウド型名簿作成サービスがあります。

http://listerweb.iqube.net/

インターネット上のメールアカウントにあるメールデータの署名欄を解析し、自動的に名簿を作成してくれるというものです。
大変便利に使い始めました。

と思っていました。が、

仕事に使うには大変大きな問題があることが分かりました。

Listerが作成した情報をそのまま利用するのはとくに問題はなさそうですが、情報が違うからと住所などを編集をすると、その人に確認メールが送信されます。また、確認メールを送信しないオプションはありません

相手がよく知っている人で、よく分からないメールも受け入れてくれる人なら問題はありませんが、たいていの場合はそうではありません。
先日は、取引先のご担当者から情報漏洩の危険について問合せのお電話をいただき、ご説明をしなければなりませんでした。

したがって、

親しくない方の情報を編集してはいけません。

できれば、

使わない方が安心です。

もし使い始めた方がいらっしゃいましたら、ご注意ください。

1TBのポータブルハードディスク

1TB (1024GB)のポータブルハードディスクを1万円の予算で、というのはなかなか難しいかもしれない。とりわけ有名メーカーの製品となると、値段が張る。Buffalloのものだと1万5千円だ。そこで、部品を組み合わせて作ることにした。2.5インチ・ハードディスクはWestern Digital製で7,780円。1TBとなると、Dosparaではこの製品しか存在しない。また、1TBの製品は厚みがあるので、普通の2.5インチ用のケースでは収納できない。そこで、若干高いが、USB 3.0に対応している玄人志向の製品を購入。こちらは2,680円。しめて10,460円也(税込)。
1TBのポータブルハードディスク

Western Digital Scorpio Blue WD10TPVT
http://www.dospara.co.jp/5shopping/detail_parts.php?bg=1&br=13&sbr=405&mkr=&ft=&ic=150885&st=2&vr=50&lf=0

玄人志向 GW2.5BM-SU3/BK
http://www.kuroutoshikou.com/modules/display/?iid=1590

LenovoのノートパソコンU350のハードディスクは、250GBの容量しかなく、残り30GBを切るほど空き容量が少なくなっていた。そこで、ビデオファイルをほとんどポータブルハードディスクに移すことで、空き容量を増やすことに成功。現在118GBの余裕がある。ハードディスクの空き容量でお悩みの方、お試しあれ。

Ubuntu をメインマシン&ウェブサーバにする

これまで、自宅のデスクトップ・メインマシンは Windows XP の自作機(「デスクトップ」)、自宅サーバは Ubuntu 8.04 をインストールした古いサーバ機(「旧サーバ」)を使ってきた。いろいろな動機で、この2台を一つにまとめてみたくなった。まず、2台を動かすのは電気代がもったいないということ。次に、XPではなく、Ubuntu をメインマシンとして使ってみたいという好奇心。三番目に、仮想マシンで動作するXPがどこまで使えるものかを試したいということだ。

Ubuntu のデスクトップ

当然ながら、旧サーバの使用を止め、使用中のデスクトップに Ubuntu を入れるということである。また、Ubuntu の仮想マシンとして Windows XP を動作させるのである。そのために行わなければならないことはざっと次にようになる。
続きを読む

Vaio P に Ubuntu 10.04 Netbook Edition を入れた!

前の記事で書いた、Vaio type P に Ubuntu 10.04 Netbook Edition をインストールした(Vaio type P に Ubuntu 9.10 を入れて快適モバイル)。インストールの手順はほぼ前回通りだ。ただし、今回は日本語Remix CDを使わず、Ubuntu本家(英語版)サイトから Ubuntu 10.04 Netbook Edition をダウンロードしてインストールした。日本語Remix と同じ環境になるように次のページに書いてある手順を実行した。

ログイン後に表示されるトップメニューはこんな感じ。小さい風車のようなマークは起動中のアプリケーションを表す。
トップメニュー
続きを読む

Vaio type P に Ubuntu 9.10 を入れて快適モバイル

社長が使わなくなったVaio type Pを貸してくれた。OSがVistaでものすごく遅いマシンだ。そこで、Ubuntu を入れてみた。無線LANの接続が不安定だったり、音が出なくなったりすることもあるが、ウェブのブラウズをしたり、メールチェックをするのには十分快適だ。手順を書いてみる。
Vaio type P
続きを読む

CMS人気比較-WordPressがJoomlaを逆転

Google Trends で見るCMS人気比較、今回で3回目になります。今度の大ニュースはずばり、WordPressの人気(検索数)がJoomlaを上回ったことです。2回目の時はJoomlaがWordPressをリードしていましたが、今回は逆転です(図1、図2)。比較に取り上げたのは、WordPress、Joomla、Drupal、MODx、XOOPSの5つのオープンソースCMSソフトウェアです。

WordPressの凄まじいまでの開発ペース、ユーザコミュニティの充実がWordPress人気の要因となっていると考えられます。前回執筆時のWordPressのバージョンは2.5でしたが、わずか1年半で2.9にまで上がっています。Drupalは検索数が横ばいで、WordPressとJoomlaの2大CMSに追いつけないことがはっきりしてきたように見えます。MODx、XOOPSについては、ほとんど使われていないに等しい状況であるといえます。

続きを読む

さよなら、Drupal。お帰り、WordPress♪

1年とちょっとの間、個人ブログのサイト管理システムとしてDrupalを使ってきた。しかし、元々使い勝手が悪く、とくに写真の扱いについては悪夢のようだった。また、Drupalのアクセス解析は原始的なもので、WordPress.com Stats の素晴らしさとは比較にならなかった。この1年の間に、WordPressはバージョン 2.5, 2.6, 2.7, 2.8 へと進化した。現在の最新版は 2.8.3だ。

あまりの使い勝手の悪さに閉口し、DrupalのサイトをWordPressに移行することにした。その作業中に気づいたのだが、数百件のコメントスパムが掲載状態になっていたのだ。Akismetモジュールを有効にしていたのにも関わらず、である。どこまでダメなやつなんだろうか、Drupal。おかげで、WordPressに移行した後もスパマーの攻撃を受けるので、やむなくCaptchaのプラグインを導入するハメになったのだ。

続きを読む

CodeIgniterでAJAX開発

この度、ある商品の取引演習をオンラインで行うためのシステムをPHP開発フレームワークの一つである CodeIgniter を使って開発した。株取引に似ているが、秘密入札によるオークションシステムである。売り注文情報をリアルタイムに表示していく機能と、売り注文情報を見ながら買い注文を入れられる機能のために、AJAX技術を組み込んだ。要求仕様が確定してから演習本番までの期間がわずか半月というタイトなスケジュールだったが、受講者の皆さんに満足いただけるシステムを開発することができた。

続きを読む