Rails3でTwitter Bootstrap

Rails3でTwitter Bootstrapを使いたい。
twitter-bootstrap-railsとかではなく、素のまま組み込んでみたい。

まず、bootstrapはvendor/assets以下に導入します。

vendor
├─assets
│  ├─javascripts
│  │      bootstrap.js
│  │      bootstrap.min.js
│  │
│  └─stylesheets
│          bootstrap-responsive.css
│          bootstrap-responsive.min.css
│          bootstrap.css
│          bootstrap.min.css

application.html.erbでは、以下のように参照します。

  <%= stylesheet_link_tag    "bootstrap.min.css" %>
  <%= javascript_include_tag "bootstrap.min.js" %>

ここまでで、developmentモードでは動作するはず。


さらにherokuで動かす場合は、assets(css, javascript)をpublicディレクトリ以下にコンパイルする必要があります。
まず、コンパイル対象にbootstrapを追加するため、config/envirments/production.rbに追記。

config.assets.precompile += %w(bootstrap.min.js)
config.assets.precompile += %w(bootstrap.min.css)

んで、以下のコマンド実行。

RAILS_ENV=production bundle exec rake assets:precompile

こんな感じのファイルが出来るはず。
これを含めてherokuにpushすればOK。

public
└─assets
        bootstrap.min-92b9ee34b16752b445620df2772f1282.css
        bootstrap.min-92b9ee34b16752b445620df2772f1282.css.gz
        bootstrap.min-ab12e4859db634f5773422af4cc9711d.js
        bootstrap.min-ab12e4859db634f5773422af4cc9711d.js.gz
        bootstrap.min.css
        bootstrap.min.css.gz
        bootstrap.min.js
        bootstrap.min.js.gz
        (略)

あと、local&WEBrickな環境でproductionモードを試す場合、
config/environments/production.rbに次の設定も必要。

# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = true

これだけにずいぶん苦労したよ。。

ログイン後、遷移するはずだったページを開く

例えば、あるモデルの新規作成ページが呼ばれ(GET /hoge/new)、
ログインが未だだったのでログインページにリダイレクトされたとする。
ログインが正常に終了した場合に、新規作成ページに戻してあげたい。

  • やり方
    • ページ遷移のたびにURLをセッションに保存しておく(before_filter :store_location)
      • ログイン判定の前に置くこと(before_filter :store_location, :authorize)
    • ログイン後、保存してあるURLにリダイレクトする(redirect_to session[:previous_url])
      • ログインページは保存対象から外すこと(skip_before_filter :store_location)
class ApplicationController < ActionController::Base
  protect_from_forgery
  
  before_filter :store_location, :authorize
  
  private
  
    def store_location
      session[:previous_url] = request.url
    end

    def authorize
      unless User.find_by_id(session[:user_id])
        redirect_to login_url, notice: "Please login."
      end
    end    
end
class SessionsController < ApplicationController
  skip_before_filter :store_location
  skip_before_filter :authorize
  
  def create
    user = User.find_by_name(params[:name])
    if user and user.authenticate(params[:password])
      session[:user_id] = user.id
      redirect_to session[:previous_url]
    else
      redirect_to login_url, alert: "Invalid username or password."
    end
  end

初心者がVimでRails

Railsの開発環境を求めて色々サーフィンしたけど、もうVimしかなかった。

Vimセットアップ

以下のブログを信じてVimプラグインを入れる。感謝。
Windows環境のVimでRuby on Rails 3を快適に使う設定 | ぐるらん-facebookアプリケーション開発日記

  • Vimのバージョンは、7.3.284 (2011/08/18)
  • AutoComplPopは、2.14.1 (2009-12-12)
  • rails.vimは、4.3 (2010-09-10)
  • project.tar.gzは、1.4.1 (2006-10-13)

設定ファイルは「_vimrc」でなく「_gvimrc」に。

Vimの設定あれこれ

次はこのブログを頼りに設定を弄くる。感謝。
Vim初心者的導入メモ 2/3 「vimrc設定」編 - ナレッジエース

カラースキーマ大事よね。「zenburn」にした。
おぉ、かっこ良くなった!!!

Vimのウィンドウサイズも変更した。
gvimのウィンドウサイズを変える - YKMbPP

とりあえず普通にscaffold

rails new blog_app
cd blog_app
bundle install
rails g scaffold post title:string body:text
rake db:migrate
rails s
http://localhost:3000/posts

Controllerを開いてみる

blog_app\app\controllers\posts_controller.rb

見やすーい!!!

rails.vimの機能を少々試す

このブログにまとまってる。
rails.vim まとめ - coリ・ー・ン<2nd life

:R

おお、一発でviewに移動した!!!

:Rproject

おお、サイドバーが!!!

コード補完も!!!

以上です

railsのコマンドもvimからできるみたい。
フォルダ移動とか、vimで全部完結できるようになりたい。

Evernote Webの3ペインを上下にわける方法

Evernote Web - Chrome ウェブストア
https://chrome.google.com/webstore/detail/lbfehkoinhhcknnbdgnnmjhiladcgbol?hl=ja

Chrome ウェブストアの画面キャプチャを見ると、
縦に3ペインのレイアウトと、
メールクライアントっぽい左・上・下のレイアウトがあるように見えるのだけれど、
その切り替え方法が分からず悩んでしまった。

"evernote web ペイン レイアウト 変更"とかググってもいまいち。

5分ほど悩んで気付いたらなんてことはなかった。

表示オプションを"サマリー"から"リスト"に変更し、
(この時点だと縦2ペイン)
リストから一つノートを選択すれば良かったのだ。

CanonプリンタでのAirPrintについて

こちらの記事を参考にさせていただき、無事成功したワケなんですが、2点ほどメモ。

(Windows 簡単バージョン) CANONやEPSONのプリンタで AirPrint 印刷をする | paraches lifestyle lab.

iTunesを入れたくない場合

会社のPCに設定したかったので、iTunesをインストールするのは若干引いてしまったのです。
重いなーと。
参考記事を見る限り、Bonjourサービスってのが動いてれば良さそうだったので、
以下で代用してみましたが、上手く行きました!

アップル - サポート - ダウンロード - Bonjour for Windows 1.0.4

AirPrintサービスを起動していると印刷要求が消える(謎)

参考記事では、airprint.exeをサービス起動した上で、さらに普通に実行もしてるんですが、
この状態だと、なぜか上手く印刷されませんでした。
そこでたまたまですが、サービスをとめてみたらあら不思議。
無事、印刷に成功です。

まとめ

ということで、私の環境(WinXP sp3)では以下の手順でOKでした。

  1. プリンタを共有する
  2. Bonjour for Windows(1.0.4)をインストール
  3. AirPrint.zipを入手し好きな場所に展開
  4. AirPrint内のairprint.exeを実行

rails3+sqlite3.7.6でエラー

新しくrails3の環境を構築していたところ、
scaffoldで以下のエラーが発生…

プロシージャエントリポイントsqlite3_column_database_nameがダイナミックリンクライブラリsqlite3.dllから見つかりませんでした。

sqlite3.dllはちゃんと配置したしな、としばらく悩みましたが、
sqlite3のバージョンを一つ落とすことで解決。

sqlite3.7.6 ⇒ sqlite3.7.5

最新のdll、ぶっ壊れてんのかなぁ。