Rails3でTwitter Bootstrap
Rails3でTwitter Bootstrapを使いたい。
twitter-bootstrap-railsとかではなく、素のまま組み込んでみたい。
- 環境
- rails 3.2.9
まず、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)、
ログインが未だだったのでログインページにリダイレクトされたとする。
ログインが正常に終了した場合に、新規作成ページに戻してあげたい。
- 環境
- rails 3.2.9
- やり方
- ページ遷移のたびにURLをセッションに保存しておく(before_filter :store_location)
- ログイン判定の前に置くこと(before_filter :store_location, :authorize)
- ログイン後、保存してあるURLにリダイレクトする(redirect_to session[:previous_url])
- ログインページは保存対象から外すこと(skip_before_filter :store_location)
- ページ遷移のたびにURLをセッションに保存しておく(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
rails.vimの機能を少々試す
このブログにまとまってる。
rails.vim まとめ - coリ・ー・ン<2nd life
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サービスってのが動いてれば良さそうだったので、
以下で代用してみましたが、上手く行きました!
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、ぶっ壊れてんのかなぁ。