開いてるファイルをそのまま実行できるsmart-compileでGemfileを開いてたらbundle installを実行したかったのでやり方を調べてみました。
設定方法 どうやらsmart compile は自動的にコマンドの実行ディレクトリをファイルがある場所に移動してくれるようなので単純に Gemfileというファイル名とbundle installのコマンドを他のファイルと同じように紐付ければOKのようです。
(global-set-key (kbd "C-c C-x") 'smart-compile) (setq smart-compile-alist (append '(("\\.rb$" . "ruby %f")) '(("\\.php$" . "php %f")) '(("\Gemfile$" . "bundle install")) smart-compile-alist)) もちろん ruby や php を使ってなかったら該当行は必要ありません。
使い方 これで Gemfile を開いて C-c C-x するとこんな風に bundle install が実行されます。
-*- mode: compilation; default-directory: "~/dev/foo/" -*- Compilation started at Sun Dec 15 16:29:42 bundle install Using rake (10.1.0) Using i18n (0.6.9) from git://github.com/svenfuchs/i18n.git (at master) Using minitest (4.
Railsの学習がてらに2chもどきをつくろうと思って `rails new 2ch` してみるとエラーになる。これはいいんだけど、`rails generate Model 2ch` ってエラーを吐かないのに実際は使えないので修正がめんどくさくなるので気をつけましょう。
Railsでこんなdeprecatedの警告が出てきたので対処方法を調べた。
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message. 対策 config.i18n.enforce_available_locales = true でOK, `locale validation` をきちんとするなら true、どうでも良いならfalseらしい。よくわかんない。
参考 [ruby – Rails I18n validation deprecation warning – Stack Overflow][1]
Zurb-FoundationとかTwitter bootstrapを使ってると、アイコンをリンク内に含めたくなったりしますよね。こんな感じに
[crayon lang=”html”]
Reload
[/crayon]
でもこれをそのまま `link_to` で囲んで
[crayon lang=”html”]
<%= link_to “ Reload”,”http://example.com/reload” %>
[/crayon]
とすると``タグがHTMLエスケープされて悲しい事態になるんです。
対策 なのでそういう時は `link_to` さんはブロックが取れるのでブロックを使って処理しましょう。ブロックの返り値がリンクのテキストになります。
[crayon lang=”html”]
<%= link_to “http://example.com/reload", class: ‘reload’ do %>
Reload
<% end %>
[/crayon]
ちなみに `button_to` も同じような関数なのでこういう風にかけます。
[crayon lang=”html”]
<%= button_to “”, class: ‘small radius’ do %>
Reload
<% end %>
[/crayon]
これ知らない時に必死にHTMLエスケープされないために何をすればよいのかを探しまくったのは今では良い思い出でもなんでもありません。時間返せ。
参考 [ruby on rails – link_to in helper with block – Stack Overflow][1]
どんなフィルタが適用されてるか確認したかったので質問したら教えてもらえました。Stackexchangeの回答者様ありがとうございます。
[crayon lang=”php”]
参考 [How to check a filter are applied – WordPress Answers][1]
WordPressの has_filter()は返り値が int|boolean なので普通に if(has_filter()) で処理しちゃうと `` が返ってきた時に意図しない結果になってしまいます。
解決策 なのでそういう時は if(is_int(has_filter())) を使いましょう。
参考 [wordpress – recognize `` as a true in PHP if statement – Stack Overflow][1]
そのまま unique 条件付の index を追加しようとするとエラーになるので
まず既にある index を削除してから追加しましょう。
[crayon title=”db/migrate/add_unique_constraint.rb”]
def change
remove_index :editabilities, [:user_id, :list_id]
add_index :editabilities, [:user_id, :list_id], unique: true
end
[/crayon]
参考 [ruby on rails – How to add unique constraint to already existing index by migration – Stack Overflow][1]
WordPressを覚えたくなったので[WordPressの教科書2][1]を読みながら勉強中。気になったところをメモっていきます。本の現物がないと意味不明です。
P.065: フィルターフックを追加するのに関数名が `add_filter` なのが非常に気に食わない。そこは `add_filter_hook` とめんどくさくてもちゃんと書くところじゃないです!?
P.071 `WP_SiteManager_bread_crumb::bread_crumb(‘navi_element=div&elm_id=bread_crumb’);`
って出てきたけど引数にこんなURL表記みたいな気持ち悪い方法使うの…?
P.115 カスタムフィールドの名前欄を編集不可にはできないのかな? (P.127から「専用の管理画面を作成する」が始まった!)
P.253 Genericons便利そう。
後は適当に流し読みしたので終了。
今までVimでRailsのプロジェクトの中にあるファイルを開くのに毎回FinderのウィンドウからD&DしていてめんどくさかったのでVimの左側にファイラーが表示できたらいいな、と思って調べてみました。
検索した所 Opsplore が見つかったのでインストールしようかと思ったらインストールの仕方がわからなかったのでもののついでに多分パッケージ管理する拡張があるだろうと考えて調べてみたらやっぱりありました。
NeoBundleでパッケージ管理 どうやら昔はBundleというソフトが有名だったけど、機能不足などの問題でVundleがForkされて更に統一性などの問題点が改善されたNeoBundleが出されたようです。
はじめ動かなくて困ってTwitterでつぶやいていたら @todashuta さんが直してくれました。ありがとうございます。
Vimpusher NeoBundleなどのパッケージ管理を使っていて、その.vimrcをGitなどのオンライン上に置いている場合はソーシャルVimプラグインサービスの[Vimpusher][1]というサービスがあり、これに登録しておくとおすすめのプラグインを紹介してくれるそうです。
便利そうなプラグイン なんでもRailsを使うのに便利なプラグインがあるそうなので早速それを入れてみる。
[tpope/vim-rails · GitHub][2]
においてあるのでNeoBundleでインストールするために
~/.vimrc に
NeoBundle 'tpope/vim-rails'
と追記し、
``今までVimでRailsのプロジェクトの中にあるファイルを開くのに毎回FinderのウィンドウからD&DしていてめんどくさかったのでVimの左側にファイラーが表示できたらいいな、と思って調べてみました。
検索した所 Opsplore が見つかったのでインストールしようかと思ったらインストールの仕方がわからなかったのでもののついでに多分パッケージ管理する拡張があるだろうと考えて調べてみたらやっぱりありました。
NeoBundleでパッケージ管理 どうやら昔はBundleというソフトが有名だったけど、機能不足などの問題でVundleがForkされて更に統一性などの問題点が改善されたNeoBundleが出されたようです。
はじめ動かなくて困ってTwitterでつぶやいていたら @todashuta さんが直してくれました。ありがとうございます。
Vimpusher NeoBundleなどのパッケージ管理を使っていて、その.vimrcをGitなどのオンライン上に置いている場合はソーシャルVimプラグインサービスの[Vimpusher][1]というサービスがあり、これに登録しておくとおすすめのプラグインを紹介してくれるそうです。
便利そうなプラグイン なんでもRailsを使うのに便利なプラグインがあるそうなので早速それを入れてみる。
[tpope/vim-rails · GitHub][2]
においてあるのでNeoBundleでインストールするために
~/.vimrc に
NeoBundle 'tpope/vim-rails'
と追記し、
``
で設定の再読み込みをすると “Install bundles now?” と聞かれるので”yes”を選択すればOKです。メッセージが流れないのでフリーズしてるように感じましたが正常にインストールされてました。
たとえば post_controller.rb 上の def index の上にカーソルがあるときに gf と入力すれば index.html.erb が開かれます。
詳しい動作はまた今度確認することします。
他にも入れといたほうがよさそうなプラグイン こちらのサイトを参考に便利そうなプラグインを追加していきました。
[天井冴太的つれづれblog [天井の染み]: このVim plugin達に感謝しなければ年を越せない!私が今年使い倒した2012年のベストを全部ご紹介!][3]
” RubyやPerl風の正規表現。
NeoBundle ‘othree/eregex.
RailsのModelは常に単数名詞、そしてControllerはその名詞の複数形という規則がありますが、Modelが”Child”などの不規則変化名詞だった時にController名はChildrenなのか、Childsなのかがわからなかったので調べました。
答え プログラム的には当然簡単に処理できるChildsだと思ったけども実際はちゃんと不規則変化にも対応してるらしくChildrenが正解です。
その他の不規則名詞 他の不規則名詞は
https://github.com/rails/rails/blob/4-0-0/activesupport/lib/active_support/inflections.rb
に載っているんですが、
inflect.irregular('person', 'people') inflect.irregular('man', 'men') inflect.irregular('child', 'children') inflect.irregular('sex', 'sexes') inflect.irregular('move', 'moves') inflect.irregular('cow', 'kine') inflect.irregular('zombie', 'zombies') zombieって不規則名詞なの…?
cow→kineの変化はそもそも英単語がわかりませんでした、、
Zombieが不規則名詞の理由 ([2013/12/14] 追記) 単数形から複数形への変化は規則通りですが、複数形から単数形への変化 zombies -> zombie が不規則で、規則通り変化させてしまうと zombies -> zomby になってしまうから不規則名詞らしいです。英語は難しいですね。
情報元 [Model and Controller's naming rule for irregular noun in Rails – Stack Overflow][1]