Ruby | iii threetreeslight

April 30, 2018

Don't work hugo autorebuild with dinghy

host側のvolumeをmountしているのだが、その変更をwatcherが補足しない = LiveReloadが動かないのはかなり辛い。 そのため、hugoとdinghyのコードを追う。 そもそもdinghyがmountしたhostのfseventを伝搬できているのか? dinghyは fsevent を vmに伝搬しているはず。 そのため、 inotify-tools を使ってどのようなeventとして伝搬されているのか確認する。 $ docker run -it --rm -v $PWD:/app debian:latest sh % apt-get update && apt-get install -y inotify-tools % cd /app % inotifywait -rme modify,attrib,move,close_write,create,delete,delete_self . Setting up watches. Beware: since -r was given, this may take a while! Watches established. # fileをcontainer内で作成するとcreateのeventを補足する $ docker exec 2a5e08389e9b touch /app/foo.md ./ CREATE foo.md ./ ATTRIB foo.md ./ CLOSE_WRITE,CLOSE foo.md . ... Read more

August 30, 2014

ruby scriptをvimから実行すると、rbenvのrubyが読まれない

require rbenv ruby bash or zsh 問題 ruby scriptをvimから実行すると、rbenvのバージョンのrubyが読まれない 原因 intractive shell起動じゃないから。 解決策 zshの場合は、zshenvに記載 $ vim ~/.zshenv export PATH="$HOME/.rbenv/bin:$PATH" boxenの場合はzshevnにこんな感じ $ vim ~/.zshenv source /opt/boxen/env.sh その他shellの場合 rbenv - Unix shell initialization

July 24, 2014

pry 0.10.0にてundefined method `pager`が起きたときの暫定対処

事象 0.9.12.6 -> 0.10.0にあげたらエーって言うぐらい怒られた。 pry> User.all undefined method `pager' で、実際にissueもまだopen pry/pry 0.10.0 - undefined method `pager’ for nil:NilClass #1265 環境 ruby 2.0.0p353 rails 4.1.1 pry-byebug 1.3.3 pry-rails 0.3.2 pry-remote 0.1.8 原因 詳しく調べてないおち 対応策 とりあえず、pagerが原因なら殺しておく。 $ vi .pryrc Pry.config.pager = false https://github.com/pry/pry/wiki/Customization-and-configuration#pager これで動作しました。

October 12, 2013

rubocopを入れて意識の高いrubyist目指す

コードが良い臭いのするコードでありたい。 そのためには、適切なstyle guideに遵守、もとい慣れ親しむ事が必要?というか出来てないから怒ってほしい? そんなときに使うのがrubocop $ rubocop app spec lib/something.rb こんな感じでチェック実行可能。 install まずインストール。個人的にはboxen辺りに仕込んでおきました。 $ gem install rubocop vimに組み込む 今回は、vim-rubocopを利用します。 $ vim ~/.vimrc " Ruby static code analyzer. NeoBundleLazy 'ngmy/vim-rubocop', { \ 'autoload' : { 'filetypes' : ['ruby'] } \ } let s:bundle = neobundle#get('vim-fugitive') function! s:bundle.hooks.on_source(bundle) let g:vimrubocop_keymap = 0 nmap <Leader>r :RuboCop<CR> endfunction 試す hoge.rubyを作って試します。 $ vim hoge.ruby def badName if something test end end vim> \r hoge. ... Read more

August 28, 2013

chef-soloでvagrant上の仮想サーバーにLAMP環境作る

基本はdotinstall先生でやった事や、本に書いてあった事をメモる。 workstationの設定(chefをインストール) LEAN CHEF - Workstation Setup require ruby 2.0.0 rbenv bundler いれてきます。 $ mkdir chef-temp $ cd chef-temp $ vim .ruby-version 2.0.0-p247 $ vim .gitignore *.gem *.rbc .bundle /vendor/bundle .config coverage InstalledFiles lib/bundler/man pkg rdoc spec/reports test/tmp test/version_tmp tmp # YARD artifacts .yardoc _yardoc doc/ # vagrant /vendor/vagrant $ vim Gemfile source 'https://rubygems.org' gem 'chef' gem 'knife-solo' $ bundle install --path vendor/bundle $ be knife -v Chef: 11. ... Read more

July 31, 2013

rspec利用時にmodel変更が適用されない。

rspec利用時にmodel変更が適用されないくてこまった。 ぐぐってみるとあるあるな模様。 環境 $ gem list | ack rspec guard-rspec (3.0.2) rspec (2.13.0) rspec-core (2.13.1) rspec-expectations (2.13.0) rspec-mocks (2.13.1) rspec-rails (2.13.0) $ gem list | ack spork guard-spork (1.5.1) spork (1.0.0rc3) 調査方法 sporkではあるあるの模様。 spork - Troubleshooting Some changes to files don’t take effect until I restart Spork. Your file is getting preloaded in your prefork block. Anything in the prefork block is cached during the life of the > spork server (this is what makes it run faster than otherwise). ... Read more

June 20, 2013

nanocをデバッグして使ったpryコマンドとか

nanoc-sprockets-filterが動かない理由を探るべく。頑張る。 で、入れてるだけpry君でガッツリ頑張ってみようと思い立ち、ちゃんと使うためにも再勉強しつつデバッグを頑張った。 そのとき良く使ったコマンド等々を以下にメモ。 仕込んで デバッグしたい箇所にbreak pointを仕込んで幸せになる。 $ vim hoge.rb require 'pry' module M class C def initialize @foo = 'hoge' end def m(opt={}) puts 'hello' binding.pry end end end M::C.new.m $ ruby hoge.rb 5: def m 6: puts 'hello' => 7: binding.pry 8: end [1] pry(#<M::C>)> これだけで結構幸せ。 今どうなってるか調べて メソッドやインスタンス変数とか洗いざらい出す。 > ls M::C#methods: m instance variables: @foo locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_ > ls self M::C#methods: m instance variables: @foo > ls self -mj > ls self -M ー>インスタンスメソッドのみ。 メソッドの内容洗う ... Read more

March 11, 2013

[carrerwave]Uploader毎に保存ディレクトリを変更する

carrerwaveにおけるアップロード先を複数も受ける場合は以下のように、各uploader毎にconfigをoverrideする事で出来る。 How to: Define different storage configuration for each Uploader. def initialize(*) super self.fog_credentials = { :provider => 'AWS', # required :aws_access_key_id => 'YOURAWSKEYID', # required :aws_secret_access_key => 'YOURAWSSECRET', # required } self.fog_bucket = "YOURBUCKET" end

February 10, 2013

capistranoのタスク作る

sshログインしてwhoamiしてみる。 in locale gem入れる $ gem install bundler $ vim Gemfile source "http://rubygems.org" gem 'capistrano' $ bundle install $ capify . $ vim deploy.rb task :hoge, :hosts => "localhost" do run "whoami" endT localからsshログインできるよう設定 $ cap ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys System Preferences -> Sharing -> Remote Login needed to be enabled $ ssh localhost Test $ cap hoge

February 10, 2013

[rails]booleanのvalidation

booleanのvalidationをpresentsにて実行しようとしたらfalseで引っ掛かる。 validates :hoge, :presents =&gt; true # damepo そりゃそうだよね。ということでinclusionで処理するしか無いみたい。 validates :hoge, :inclusion =&gt; {:in =&gt; [true, false]} 参考 rails-validating-inclusion-of-a-boolean-fails-tests ActiveModel::Validations::ClassMethods