sinatra + git + heroku で自己紹介サイトの構築
TwitterやFacebook、blogなど自分のアカウントが一通りあるので、それらをまとめて自分の自己紹介HPみたいなのを作ってみようと思い立った。
ちょうど勉強中のsinatraを使って、git + herokuで運用というのに挑戦してみることにした。
構想としては、簡単な自分の紹介と各利用WEBサービスへのリンク。あとは、Twitterでのタイムラインくらいを載せられたらいいな。
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関連の編集
これはもうお好みで
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
興味のある記事
sinatraをherokuにデプロイ
Rubyを使った何かを作りたいけどRailsを使うほどでもない。そんなことを考えていたら、sinatraというフレームワークに辿りついた。せっかくなので、github→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インストールされている!
$vim .gems
sinatra --version 1.1
$git push heroku master
- > Heroku receiving push
- > Sinatra app detected
- > Installing gem sinatra 1.1 from http://rubygems.org
Successfully installed rack-1.2.2
Successfully installed tilt-1.3
Successfully installed sinatra-1.1.0
3 gems installedCompiled slug size is 652K
アプリケーションの起動
ブラウザが立ち上がってエラー出てなければOK。
$heroku open
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に接続
virtualbox上のubuntuでrails開発環境構築ガイド
開発環境をクリーンにする個人的な3つの禁止事項という記事を読んで、イイネ!ということで、仮想local開発環境を作成する試み。
ubuntu10.04にRuby on Rails開発環境とその他もろもろを作ってみよう。ただ、サーバの知識独学だからほぼ、手探りかつ間違っているかもだけど。
ちなみに、virtualboxは3.2.12を使用します。そして、virtualboxからubuntuを使用する方法はどこかで見つけるのが吉。
環境
virtualbox用ubuntuのダウンロード
Proxyの設定
必要なければいらない。
- システム
- 設定
- ネットワークのプロキシ
ubuntu10.04LTSへのアップグレード
UbuntuTips/Install/UpgradeLucid - Ubuntu Japanese Wiki
8.04 LTSから10.04 LTSへのアップグレード
Ubuntuデスクトップのネットワークアップグレード(推奨)
以下の手順でネットワーク越しに簡単にアップグレードすることができます。
- Alt+F2を押して、update-manager --devel-releaseと入力します。
- Notes: LTS Upgradeに限り、-d/--devel-releaseオプションが必要です。
- 再チェックボタンをクリックして新しいアップデートを確認します。
- インストールすべきアップデートがあれば、アップデートをインストールするボタンを使ってパッケージをアップデートし、アップデートが終わった後に再び再チェックボタンを押します。
- 新しいリリースが利用できる事を通知するメッセージが現れます。
- アップグレードをクリックします。
- 画面に表示される手順に従ってください。
VBOXADDITIONSのインストール
- virtualboxのデバイス
- CD/DVDデバイス
- VBoxGuestAddition.iso
デスクトップにCDのアイコンが見えると思うので(見えなければHOMEディレクトリから)右クリックして表示されるコンテキストメニューから「オートランの問合せで開く」を選択
rootパスワード入力
コンソールが立ち上がってちょっと待ってたらインストールが終わる。
Doyou wish to continue anyway? → yes
再起動。
ソフトウェアを最新状態にする
このとき、プロキシが設定されている場合、システム全体に適用しておかないと効かない場合がある。
- システム
- システム管理
- アップデート・マネージャ
- 再チェック
- アップデートをインストール
sudo apt-get autoremove
とりあえずここまでで、クリーンな初期状態ができた。
アップグレードとか多少時間かかるから、この時点で、virtualboxならスナップショットとか取っておくと良いかも。(便利やなぁ。)
rubyとrubygemsとrailsのインストール
プロキシはさんでる場合、~/.gemrcに記載が必要。
プロキシ設定している場合はこれが必要
vi .gemrc
http_proxy: http://[proxy server]:[port]
rails インストール
あとはここを参考に
でらてーげー(^_^)/:【覚書】Ubuntu10.04LTSにRails3をスマートにインストールする
vim関連のインストール