sou's blog

落ち着いた華やかさがあり、上品に明るく陽気なさまを表す。

sinatra + git + heroku で自己紹介サイトの構築

TwitterFacebook、blogなど自分のアカウントが一通りあるので、それらをまとめて自分の自己紹介HPみたいなのを作ってみようと思い立った。
ちょうど勉強中のsinatraを使って、git + herokuで運用というのに挑戦してみることにした。

構想としては、簡単な自分の紹介と各利用WEBサービスへのリンク。あとは、Twitterでのタイムラインくらいを載せられたらいいな。

前提

  • ruby,sinatra,git,herokuなどなど必要なものがインストールされている
  • github,herokuのアカウントを取得済み
  • もっとあるかも?

gitリポジトリの新規作成

githubにログインし、aboutmeというリポジトリを作成し、お決まりの手順をとりあえず実行してgit管理下に置く。

$ mkdir aboutme
$ cd aboutme
$ git init
$ touch README
$ git add README
$ git commit -m 'first commit'
$ git remote add origin git@github.com:[username]/aboutme.git
$ git push -u origin master

sinatraの必要なディレクトリやファイルを新規作成

$ cd aboutme
$ mkdir public
$ mkdir public/css
$ mkdir views
$ touch app.rb
$ touch config.ru
$ touch .gems
$ touch public/css/style.css
$ touch views/tweet.erb
$ touch views/layout.erb

これで中身からっぽやけど、とりあえず必要なファイルを作成しておく。
ちなみにviewsのテンプレートはhamlも考えたけど、覚えることが少なそうなerbにしてみた。
.gemsファイルはherokuで運用するときにライブラリをインストールするときに必要。

.gemsの編集

herokuにデプロイしたときに必要なライブラリを読み込んでもらうため

$ vim .gems

sinatra --version 1.2.6
twitter --version 1.4.1

config.ruの編集

$ vim config.ru

require 'app'

run Sinatra::Application

app.rbの編集

$ vim app.rb

require 'sinatra'
require 'twitter'

get '/' do
  erb :tweet
end

tweet.erbの編集

usernameのところは表示させたいユーザ名を入れる。:countは表示させたいタイムラインの数 + 1(なぜかプラス1が必要)

<%=
	Twitter.user_timeline("[username]", {:count => 4}).map do |tweet|
		"<p><b>#{tweet['user']['screen_name']}</b>: #{tweet['text']}</p>"
	end.join
%>

views関連の編集

これはもうお好みで

ローカルで動作確認

$ ruby app.rb

http://localhost:4567にアクセスして思い通り表示されればOK。

gitに反映

$ git add .
$ git commit -m 'add files needed for the application.'
$ git push origin master

herokuに新規アプリケーションを作成

$ heroku create [application name]
$ git push heroku master

本番環境で動作確認

$ heroku open

これで、動作確認して問題なければOK。
ちなみにこんなのが出来ました。

sinatraをherokuにデプロイ

Rubyを使った何かを作りたいけどRailsを使うほどでもない。そんなことを考えていたら、sinatraというフレームワークに辿りついた。せっかくなので、github→herokuへのデプロイも交えて勉強してみよう。

sinatraとherokuのインストール(gemはrvm管理なのでsudoではない)

$gem install sinatra heroku

githubのアカウントを取得しssh公開鍵を登録する

$ssh-keygen
$cat /home/username/.ssh/id_rsa.pub
→出力文字列をコピーしてgithubで登録

途中、gitがプロキシ通ってないっぽいエラーが出たのでここを参考に対処。

→githubにコミットできるようになった!

けど直後に、herokuでもつまづいている。ここを参考に対処。

→なんかうまいこといかない。。。結局プロキシ配下での処理は断念。

herokuへのデプロイ

git push heroku master

Sinatraがherokuにないとおこられるので、以下のように.gemsファイルをルートディレクトリに作成してgit herokuへpush。
おぉ、ちゃんとherokuへpushしたときに3gemsインストールされている!

hysysk: HerokuでSinatraを動かす

$vim .gems

sinatra --version 1.1

$git push heroku master

          • > Heroku receiving push
          • > Sinatra app detected

Successfully installed rack-1.2.2
Successfully installed tilt-1.3
Successfully installed sinatra-1.1.0
3 gems installed

Compiled slug size is 652K

アプリケーションの起動

ブラウザが立ち上がってエラー出てなければOK。

$heroku open

SQLチューニングについて

普段業務ではSQLServerを使用しているが、OracleGold試験のために認定条件のOracleの研修1classを25日〜27日の3日間受講してきた。
SQLチューニングに関する研修だったが、なんとマンツーマンで家庭教師状態という非常に有意義な時間だったのと本業のSQLServerにも応用できそうな箇所があったのでRDBの基本理念なんて一緒だよね。ってことでメモしておく。

WindowsにRails開発環境を構築する

社内用にWindowsでもRailsの環境構築をしてみようと思いついた。自分の管理HPをちょっとずつ作れたらいいなぁ。
調べるとInstant Railsという一括で色々やってくれそうなものが見つかった。

とりあえず最新版をここからダウンロードする。
ちょうど、InstantRails-2.0-win.zipというのが見つかった。

あとは、ここを参考にしてインストールを進める。

hpricotを使ってrailsと連携させてみた

rubyのhtmlパーサを探していて一番にHITしたhpricotというものを使ってみた。
htmlの知識さえ乏しいけど、普通に使えたので練習していこう。そして、パースした情報をrailsのDBに入れて使えるようにしてみる。

hpricotのインストール

sudo gem install hpricot

Railsとの連携用にTestプロジェクトを生成する
お手軽なsqlite3を使うように明示。

rails test -d sqlite3
cd test

あらかじめ、Topicモデルを生成しておく

ruby script/generate scaffold topic post_date:date comment:string

DBに反映

rake db:migrate

HTMLパーサのスクリプトを作成
今回は、日本ハンドボールリーグのindexページの更新情報を一覧表示するWebページを作成する。

参考サイトは以下
-out of date- ブログ版:HTMLを解析してRailsのデータベースに格納
以下を適当な名前で保存する(get_topic.rb)とする。

require 'config/environment'
require 'hpricot'
require 'open-uri'
require 'kconv'

# ダウンロードしたいhtmlファイルを指定
url = 'http://www.jhl.handball.jp/index.html'
file = CGI.escape(url.gsub(/http:\/\//,""))
if File.exists?(file)
  f = open(file)
else
  f = open(url).read
  open(file, "w") {|w| w.print f }
end

items = Array.new
doc = Hpricot(f)
num = 0
# ここから重要
(doc/"li.content-list").each do |li|
  items[num] = {}

  # 掲載日を配列に格納
  (li/"div.index-list-date").each do |div|
    items[num]['post_date'] = Time.parse(div.inner_text)
  end

  # コメントを配列に格納
  (li/"div.index-list-text").each do |div|
    items[num]['comment'] = div.inner_text
  end

  num += 1
end

# 配列をデータベースに格納
# categoryとcommentは文字コードをUTF-8に変更。
items.each do |item|
  topic = Topic.new
  topic.post_date = item['post_date']
  topic.comment = item['comment'] != nil ? item['comment'].toutf8 : ""
  topic.save
end

スクリプトを実行

ruby get_topic.rb

Webサーバ起動

ruby script/server

localhost:3000に接続

http://localhost:3000/topics/

virtualbox上のubuntuでrails開発環境構築ガイド

開発環境をクリーンにする個人的な3つの禁止事項という記事を読んで、イイネ!ということで、仮想local開発環境を作成する試み。
ubuntu10.04にRuby on Rails開発環境とその他もろもろを作ってみよう。ただ、サーバの知識独学だからほぼ、手探りかつ間違っているかもだけど。
ちなみに、virtualboxは3.2.12を使用します。そして、virtualboxからubuntuを使用する方法はどこかで見つけるのが吉。

環境

virtualboxubuntuのダウンロード

ページが見つかりません | Ubuntu Japanese Team


Proxyの設定
必要なければいらない。

  1. システム
  2. 設定
  3. ネットワークのプロキシ

ubuntu10.04LTSへのアップグレード

UbuntuTips/Install/UpgradeLucid - Ubuntu Japanese Wiki

8.04 LTSから10.04 LTSへのアップグレード
Ubuntuデスクトップのネットワークアップグレード(推奨)
以下の手順でネットワーク越しに簡単にアップグレードすることができます。

  1. Alt+F2を押して、update-manager --devel-releaseと入力します。
    • Notes: LTS Upgradeに限り、-d/--devel-releaseオプションが必要です。
  2. 再チェックボタンをクリックして新しいアップデートを確認します。
  3. インストールすべきアップデートがあれば、アップデートをインストールするボタンを使ってパッケージをアップデートし、アップデートが終わった後に再び再チェックボタンを押します。
  4. 新しいリリースが利用できる事を通知するメッセージが現れます。
  5. アップグレードをクリックします。
  6. 画面に表示される手順に従ってください。

VBOXADDITIONSのインストール

  1. virtualboxのデバイス
  2. CD/DVDデバイス
  3. VBoxGuestAddition.iso

デスクトップにCDのアイコンが見えると思うので(見えなければHOMEディレクトリから)右クリックして表示されるコンテキストメニューから「オートランの問合せで開く」を選択
rootパスワード入力
コンソールが立ち上がってちょっと待ってたらインストールが終わる。
Doyou wish to continue anyway? → yes
再起動。


ソフトウェアを最新状態にする
このとき、プロキシが設定されている場合、システム全体に適用しておかないと効かない場合がある。

  1. システム
  2. システム管理
  3. アップデート・マネージャ
  4. 再チェック
  5. アップデートをインストール

sudo apt-get autoremove

とりあえずここまでで、クリーンな初期状態ができた。
アップグレードとか多少時間かかるから、この時点で、virtualboxならスナップショットとか取っておくと良いかも。(便利やなぁ。)


rubyrubygemsrailsのインストール
プロキシはさんでる場合、~/.gemrcに記載が必要。

プロキシ設定している場合はこれが必要

vi .gemrc

http_proxy: http://[proxy server]:[port]

rails インストール

あとはここを参考に
でらてーげー(^_^)/:【覚書】Ubuntu10.04LTSにRails3をスマートにインストールする


vim関連のインストール