どなブロ

Ruby, Rails, その他気になったこととか思ったこととか

【Ruby / Rails】全体が文字列になっちゃってる配列を正しい形に直す

やりたいこと

  • viewからparamsで配列をもらうんだけど、全体が文字列になっちゃってる
"[123,456,789]"

↑こんな感じの、ホントは配列だけど文字列になっちゃってるやつ
↓本当はこうしたい

[123, 456, 789]

解決方法

  • 無理やり直す
    splitしてdeleteで余分な物を消す
pry(main)> hoge = "[123,456,789]"
=> "[123,456,789]"
pry(main)> hoge.split(',').map { |m| m.delete('[]').to_i }
=> [123, 456, 789]

https://qiita.com/_miyachik/items/addf3766f0e0dd20f154

  • JSON使う
    parseするだけ
    文字列だとParseErrorになっちゃう
pry(main)> hoge = "[123,456,789]"
=> "[123,456,789]"
pry(main)> JSON.parse hoge
=> [123, 456, 789]

https://stackoverflow.com/questions/4477127/ruby-parsing-a-string-representation-of-nested-arrays-into-an-array

感想

  • JSON.parseするとなんでそうなるの

【Ruby】メソッド名を動的に呼び出す

やりたいこと

  • メソッド名を動的に変更して呼び出したい
    ex)
Class Hoge
  def hoge_once
    puts "hoge."
  end

  def hoge_twice
    puts "hoge hoge."
  end
end

# 別のところで
def fuga
  times = # "once"か"twice"が入る

  # hoge.hoge_ + times
  # みたいな感じで動的に呼び出したい
end

解決方法

  • Object#sendを使う
    ex)
times = "once"
hoge.send("hoge_#{times}")  # => "hoge."
  • sendはprivateメソッドも呼び出せちゃう
  • なので一応public_send(privateメソッドは見れない)を使う
times = "once"
hoge.public_send("hoge_#{times}")  # => "hoge."

補足

感想

メソッドチェーンで改行する場合のドットの位置

メソッドチェーンして開業する時のドットの位置って次の行に置くのが自然かと思ってましたが、行末に置くのもメリットあると知りました。

行頭

  obj.hoge(param1, param2).fuga(param3)
     .piyo(param4)
  • 綺麗に揃って見える
  • 縦にザーッと眺めた時にメソッドチェーンがあるとわかりやすい
  • (デメリット)irbやpryにコピーすると1行目だけ実行されてエラーになる

行末

  obj.hoge(param1, param2).fuga(param3).
      piyo(param4)
  • 横に読んでるとメソッドが続くのがわかりやすい
  • irbやpryにコピーした時に1行目でエラーにならない
  • (デメリット)ザッと読んでると行末のドットは気づきづらい

まとめ

一長一短ですね。
好みで言えば行頭です!

参考記事

Rubyコーディングアンチパターン - Qiita

tmuxでvimのカラースキームが反映されなかったのを一旦解決した

あんまり調べきれてない記事です、作業ログ的な
tmuxでvimのcolorscheme(というか.tmux.conf)が反映されない場合の対処法 - Qiita
この辺上手くいかない人は少しお試しください。

はじめに

tmuxを開発環境に導入しようと思いinstallしたはいいんですが、いざtmuxを立ち上げてvimを開いてみると文字が真っ白!
手間暇かけて探したカラースキームが…このままではtmuxが使えん…となったので解決策を探しました。
環境 : iTerm2, EC2 インスタンス(ssh), vim

ググった結果

ググって出た結果ですぐ解決できてればこの記事も書かないんですが、下記URLなどをとりあえず試してみた所上手くいきませんでした。
tmuxでvimのcolorscheme(というか.tmux.conf)が反映されない場合の対処法 - Qiita

prefixキーの設定などは反映されてるので.tmux.confの反映が上手くいっていないわけではなく・・

set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

この辺の設定が上手くいってないのかな〜って感じでいろいろ調べました。

解決

上記の設定としてはtmuxで使うtermを決めてるので、それを普段上手くいってるのと揃えればいいのでは?
って事で、普段のところで$ echo $TERMとすると、xterm-256colorが表示されました。

なので、上記設定のscreen-256colorをxtermの方に書き換えるとカラースキームが反映されました。
下のoverrideしてる方はいらなかったです。

後記

一旦対症療法な感じで解決しましたが、
tmux 上で Vim を True Color (24 bit color) で使う - Qiita
この記事に依るとxtermの方は非推奨なようで…。
まぁ一旦解決ということで……

以上です!!(やけくそ

個人開発日誌 -3- 練習決め機能の画面とか

あまり「何を作る!」とか明示しないでやった事そのまま書く事にしました。
とりあえずはスケジュール合わせ=練習決め機能がメインです。

続きを読む