tagsファイルを.git/下に作っじゃいけない。

ブログを書くのは久しぶりだ。3年ぶりだな〜

vimが急に重くなって、原因を調べてみた。
原因はctasによる生成したtagsファイルが.git/tagsに作られていた。
それを別のところにいたしたら、急に軽くなってきた。
原因がわからないけど、ならかのvimプラグインが.gitしたをみているのでは?とおもいました。

こんなvimのエラー解消法


completefunc=syntaxcomplete#Complete
Last set from ~/.vim/bundle/neocomplcache.vim/autoload/neocomplcache/init.vim
^@ completefunc=syntaxcomplete#Complete^@^ILast set from ~/.vim/bundle/neocomplcache.vim/autoload/neocomplcache/init.vim

最近vimがいつもこんなエラーが発生して、困ってた。
仕事中には、解決しようとおもったら、時間かかるし、土日を利用して調べた。






なんらかvim-railsのpluginの問題らしい。
https://twitter.com/masawada/status/389192740241559552


let g:neocomplete#force_overwrite_completefunc=1


let g:neocomplete#enable_force_overwrite_completefunc=1
これらの方法でvimrcに設定してみたら、解決できなかった。






ちなみに環境としては以下のようにしている。


Rails 4.0
vim 7.3
vim-rails + vundle + neocomplcache.vimというプラグンを使っている。
neocomplete.vimを使いたかったけど、 Vim 7.3.885+ を要求しているから、入れ直すのが面倒だったので、neocomplcache.vim使い続けた。





neocomplcache.vimソースコードをいろいろ調べた。
https://github.com/Shougo/neocomplcache.vim/search?q=completefunc&ref=cmdform
そこから、vimrcにこんなふうに設定してみた。






let g:neocomplcache_force_overwrite_completefunc=1

お〜、効いた。とりあえず効いた感じでした。設定後にどんなpluginが影響を受けているかは、調べてはいない。
問い合えず使ってみる。

enumerizeをboolean型のカラムに対応するには

みなさんはenumerizeを使っていますか。私は使っています。大好きです。

enumerize + simple_formをセットで使っています。

しかし、boolean型のテーブルのカラムに対して対応しようとすると

どう対応すればいいのか、迷いますね。



ちなみに、なぜboolean型をenumerizeに対応するかというと、文言表示を簡単に処理したいから。

つまり、true , false という値に対応する文言を簡単処理したいからである。

たとえば 公開(true) , 非公開(false)という 公開状況をformにラジオボタンを設置する時と

詳細ページに保存した値を表示するときに(enumerize + simple_form)セットで使うと

以下のように簡単にできる。


model

enumerize :publish, {:public => 'true' , :private => 'false'} , :default => :public


注意点は:trueとfalseを文字列としていれないと, falseのほうの処理がうまくいかないバグがでる。


viewの form

<%= simple_form_for @company,:url=>xxx, :class=> "xxxx" do |c| %>
........
........
 <%= c.input :publish , :as => radio_buttons %>   #これで公開、非公開ラジオボタンができてしまう。
........
........

<% end %>


viewのshowページで普通に

<%= @company.publish_text %>  # 公開か非公開が表示されるはず。

でいい。簡単でしょう。


I18nの対応

enumerize
  publish
    public: "公開"
    private: "非公開"

Rails4では正規表現

厳しくなったね。


The provided regular expression is using multiline anchors (^ or $), which may present a security risk. Did you mean to use \A and \z, or forgot to add the :multiline => true option?



mutiline: trueのオプションを指定することで^ と $を使ってもエラーが出なくなりますが、上記の通りリスクがあるので、「^ではなく\A」「$ではなく\z」を使うほうが良いでしょう。
from:
http://jumperson.hatenablog.com/entry/2013/06/27/062237

rake aborted! 'twitter/bootstrap/bootstrap.less' wasn't found にはまったよ。

ちなみに解決方法はこちらです。
http://319ring.net/blog/archives/2293


Rails4 + bootstrap を利用しているだけど、
bundle exec time rake assets:precompile RAILS_ENV=productionがうまくいかない。
rake aborted! 'twitter/bootstrap/bootstrap.less' wasn't found のようなエラーが出る。
Gemfileでassets groupを削除したら、うまくいった。

ruby 2.0に導入されたmodule#prependを試してみました。

最近、暑いですね。体がだるいし、何もしたくない〜〜〜。
しかし、何もしないことも、我慢できない。。。。。。。

なので、
ruby2.0に新しく入れているメソッド prependを試してみました。
メソッド探索の経路が変わるわけです。
今までは一番強かったのは、クラス内で定義されているインスタンスメソッドでした。
しかし、こいつ(prepend)が使われたら、こいつが一番になってしまうのです。
以下のコードで試しました。

module Goo
   def show
      puts "goo#show"
      super
   end
 end
   
module Too
   def show
      puts "Too#show"
      super                                                                                                                          
   end
end
  
class Foo
    prepend Goo
    include Too
  
    def show
      puts "Foo#show"
      super
    end
 end
  
  Foo.new.show

で出力結果はどうなっているの?



goo#show
Foo#show
Too#show
test.rb:11:in `show': super: no superclass method `show' for # (NoMethodError)
from test.rb:21:in `show'
from test.rb:4:in `show'
from test.rb:25:in `
'

なるほど、このメソッドがあったら何がうれしいの?