NetbeansのRuby on Rails ショートカット
Netbeansを使っていて、Ruby on Railsの開発をしているときに、
良く使っている、有用性の高いものをまとめておきます。
キーボードショートカット
CTRL + SPACE コード補完 CTRL + / コメント/アンコメント CTRL + Q 最後の編集箇所に戻る CTRL + G 行番号にジャンプ ALT + SHIFT + F コードの整形 CTRL + SHIFT + A ViewとControllerの行き来 CTRL + 1 プロジェクト CTRL + 4 出力 CTRL + 7 ナビゲータ
Rails3 でタグが自動的にエスケープされるようになった
Rails2までは、HTMLタグのエスケープは自動的にはされず、明示的に、ヘルパーメソッドhを介す必要がありましたが、
Rails3では、<%= ... %>で出力される値が暗黙的にエスケープ処理されるように変更になりました。
これをエスケープさせずにそのまま出力したい場合には、rawメソッドが利用可能です。
Rails2 での動き
<%= "<br/>" %> ↓ <br/>
<%= h "<br/>" %> ↓ <br/>
Rails3 での動き
<%= "<br/>" %> ↓ <br/>
<%= raw "<br/>" %> ↓ <br/>
Rails3(おまけ)
これでもOK!ヘルパー側で処理したくない場合に。
<%= "<br/>".html_safe %> ↓ <br/>
rails3 で will_paginate
Gemfileを以下の通り修正
gem 'will_paginate', '3.0.pre2'
そして、以下のコマンド
$ bundle install
すると、なにやら以下の通りエラーが出ます。
/usr/local/rvm/rubies/ruby-1.8.7-p352/lib/ruby/site_ruby/1.8/rubygems/format.rb:32:in `from_file_by_path': Cannot load gem at [/vol/xxx/vendor/bundle/ruby/1.8/cache/will_paginate-3.0.pre2.gem] in /vol/xxx (Gem::Exception) from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/rubygems_integration.rb:100:in `spec_from_gem' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/source.rb:77:in `fetch' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/installer.rb:50:in `run' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/spec_set.rb:12:in `each' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/spec_set.rb:12:in `each' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/installer.rb:49:in `run' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/installer.rb:8:in `install' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/cli.rb:222:in `install' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/vendor/thor/task.rb:22:in `send' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/vendor/thor/task.rb:22:in `run' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/vendor/thor.rb:246:in `dispatch' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/lib/bundler/vendor/thor/base.rb:389:in `start' from /usr/local/rvm/gems/ruby-1.8.7-p352/gems/bundler-1.0.15/bin/bundle:13 from /usr/local/rvm/gems/ruby-1.8.7-p352/bin/bundle:19:in `load' from /usr/local/rvm/gems/ruby-1.8.7-p352/bin/bundle:19
どうやらこのエラーの場合、rootで実行する必要があります。
# bundle install (略) Installing will_paginate (3.0.pre2) Your bundle is complete! It was installed into ./vendor/bundle
完了
file_columnプラグインにおけるurl_for_file_columnとurl_for_image_columnの違い
def url_for_image_column(object, method, options=nil) case object when String, Symbol object = instance_variable_get("@#{object.to_s}") end subdir = nil if options subdir = object.send("#{method}_state").create_magick_version_if_needed(options) end if subdir.nil? nil else url_for_file_column(object, method, subdir) end end
url_for_image_columnでは、第三引数optionsは画像のバージョン(:smallとか:large)とかの指定のみに使われます。
def url_for_file_column(object, method, options=nil) case object when String, Symbol object = instance_variable_get("@#{object.to_s}") end # parse options subdir = nil absolute = false if options case options when Hash subdir = options[:subdir] absolute = options[:absolute] when String, Symbol subdir = options end end relative_path = object.send("#{method}_relative_path", subdir) return nil unless relative_path url = "" url << ActionController::Base.relative_url_root.to_s if absolute url << "/" url << object.send("#{method}_options")[:base_url] << "/" url << relative_path end
それに対して、url_for_file_columnでは、第三引数optionsは画像のバージョンの指定ではなく、画像のパスの取得のための、ディレクトリパス指定として使われるようです。
基本的には、url_for_image_columnで画像のバージョン指定をしておけば問題なさそう。
file_columnのインストール(git hub経由)
# rails plugin install git://github.com/tekin/file_column.git Initialized empty Git repository in /vol/kanrakugai/vendor/plugins/file_column/.git/ remote: Counting objects: 35, done. remote: Compressing objects: 100% (33/33), done. remote: Total 35 (delta 4), reused 14 (delta 1) Unpacking objects: 100% (35/35), done. From git://github.com/tekin/file_column * branch HEAD -> FETCH_HEAD
file_Columnのインストール
環境CentOS5.6 ruby1.8.7 Rails3.0.9 ImageMagick6.2.8 RMagick1.15.17
以下だと失敗
rails plugin install git://github.com/tekin/file_column.git
これも失敗
rails plugin install https://github.com/tekin/file_column.git
しょうがないので、以下のサイトから、DownloadsでZIPをダウンロードする。
https://github.com/tekin/file_column
解凍して出来たファイルtekin-file_column-cb5b45e以下をを以下のフォルダにコピーする。
PATH_TO_PROJECT/vendor/plugins/file_column
(参考)
こちらの人も同じようにインストール出来ていなかった。
http://penguin-web.dyndns.org/mountain/blogs/241
CentOS5.6 + Ruby1.8.7 + ImageMagick6.2.8 + RMagick1.15.17
このセットで今一度チャレンジ
既にインストール済みのImageMagick6.7.1をアンインストール
yum remove ImageMagick (略) Removed: ImageMagick.i386 0:6.7.1-0 Dependency Removed: ImageMagick-c++.i386 0:6.7.1-0 ImageMagick-c++-devel.i386 0:6.7.1-0 ImageMagick-devel.i386 0:6.7.1-0
ImageMagickと関連するパッケージがアンインストールされる。
作業用rpmの保管フォルダを作成します。
# cd /usr/local/src/ # mkdir ImageMagick6.2.8 # cd ImageMagick6.2.8/
rpmのダウンロード
# wget http://mirror.centos.org/centos/5.6/os/i386/CentOS/ImageMagick-6.2.8.0-4.el5_5.3.i386.rpm # wget http://mirror.centos.org/centos/5.6/os/i386/CentOS/ImageMagick-c++-6.2.8.0-4.el5_5.3.i386.rpm # wget http://mirror.centos.org/centos/5.6/os/i386/CentOS/ImageMagick-c++-devel-6.2.8.0-4.el5_5.3.i386.rpm # wget http://mirror.centos.org/centos/5.6/os/i386/CentOS/ImageMagick-devel-6.2.8.0-4.el5_5.3.i386.rpm
rpmのインストール
# rpm -ivh ./* 準備中... ########################################### [100%] 1:ImageMagick ########################################### [ 25%] 2:ImageMagick-devel ########################################### [ 50%] 3:ImageMagick-c++ ########################################### [ 75%] 4:ImageMagick-c++-devel ########################################### [100%]
次のページからmsttcorefonts-2.0-1.noarch.rpmをダウンロード。
(wgetだと404になるので、一度ローカルに落とそう)
http://www.mjmwired.net/resources/mjm-fedora-f7.html#ttf
rpm -ivh msttcorefonts-2.0-1.noarch.rpm ln -s /usr/share/fonts/msttcorefonts /usr/share/fonts/default/TrueType
vi Gemfile gem 'rmagick', '1.15.17', :require => 'RMagick' bundle install (略) Installing rmagick (1.15.17) with native extensions Your bundle is complete! It was installed into ./vendor/bundle
どうにかこうにか、RMagickのインストールに成功。