railsがんばる子

Ruby on Railsがんばる子です。胡蝶蘭のECサイトを運営しています。

FactoryGirlでbelongs_toしたモデルについて、別名の名前が付いている時

association :モデル名, factory: :別名 参考にさせていただいたページ、ありがとう! FactoryGirlでhas_many(またはbelongs_to)な入れ子構造データを定義する - tumblr FactoryGirlでhas_many(またはbelongs_to)な入れ子構造データを定義する - tumblr

osxでmysqlを自動起動

OSX

ln -fs /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/ 参考にさせていただいたページ HomebrewでインストールしたMySQL,MongoDBを自動起動させる - Qiita HomebrewでインストールしたMySQL,MongoDBを自動起動させる - Qiita

git add -p でファイルの任意の箇所だけステージする

git

git addの対話モードを使うと、修正単位でファイルをステージできます。 まとめて修正しちゃったけど、コミットを分けたいときに便利。 git add -p [file] y # ステージする n # ステージしない

rails generator integration_test などが動かない

bundle exec rails g integration_test hogeと唱えてみても何も出てこない。 なんでぞ?!ということで調査です。 config/application.rbで無効にしていたのが原因でした。 config.generators do |g| g.controller_specs false g.routing_specs false g.help…

subdomainでrspecしたいがハマる。

かいけつしてない。 そこそこ前に解決してた。 Gistの通りなんだが、 def switch_domain Capybara.app_host = "http://sub.#{DEFAULT_HOST}:#{DEFAULT_PORT}" end 参考にさせていただきましたページ。ざーーーす! Support for Rspec / Capybara subdomain i…

rails rspecのgenerate

僕が参加しているプロジェクトは今、テストがほぼ無い。 病んでいます。 よくデグレ起こして気まずいです。 ということで、テストの鬼となります。 とりあえず、ジェネレート!! rails g rspec:controller [xxxxx] 参考にさせていただいたページ RailsでRspec…

怠け心に勝つ

朝ミーティングが7:30からだったのを寝坊してすっぽかし、その後も怠け心に押されて13:30まで寝てしまった。 ちょっとひどすぎる。 理論的な対策 やることを具体的にする ちゃんと休憩する 根性論心理的な対策 自分を奮い立たせる言葉を見えるところに貼る …

find_eachとfind_in_batchesの違い

忘れないようにメモ find_each: 取ってきたデータは1件ずつ処理 (yield) される find_in_batches: 取ってきたデータは配列でまとめて処理 (yield) される 参考にさせていただいたページ Railsで大量のデータをまとめて更新するならfind_each使うよね - (゚∀゚)…

数字配列の合計を取る

(0..9).to_a.inject(0.0,:+) #=> 45.0 (0..9).to_a.inject(:+) #=> 45

配列をeachするときに、ブロックにかっこ良く渡す

[['2014/12/24', 'eve'], ['2014/12/25', 'dooooon!!']].each{|date, label| p "#{date} -> #{label}"} # "2014/12/24 -> eve" # "2014/12/25 -> dooooon!!" さらに、each_with_object等を使うとき... [['2014/12/24', 'eve'], ['2014/12/25', 'dooooon!!']]…

IntelliJ IDEA14でrailsスクリプトを使う

bundle exec rails runnerをIDEAでデバッグしたかったのだが、やり方が分からなくって苦戦しました。 rails console経由でスクリプトを渡して実行することで実現できたので、まぁ、それでもいいかと思ってます。 Run/Debug Configurations IRB consoleとして…

hashに対してtryする(hash#fetch、nil#try)

hashから要素を取り出すとき、nilだとエラーとなります。 [1] pry(main)> {}[:nanika] => nil [2] pry(main)> nil[:nanika] NoMethodError: undefined method `[]' for nil:NilClass そこでtryの登場ですが、hash#fetchは登録キーがないとエラーがはみ出てき…

ruby リファクタリングするときとか、まず見る

[初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか - Qiita [初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか - Qiita

findのifnoneを使うとマニアックな上にnilが返ってくるときがある

findのifnoneで要素が見つからなかった時に、空のハッシュを返すようにしていましたがnilが返ってくることがありました。 array.find(ifnone=->{{}}){条件} 腑に落ちませんが、|| {} に変更しました。 array.find{条件} || {} こちらのほうが脳にも優しい気…

配列を任意の数で区切って、その合計値をリストにする

分かりやすくハッシュにしてみました。 [24] pry(main)> list1 = (0..10).to_a => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [25] pry(main)> list1.each_slice(5).map.with_index{|item,idx| {idx: idx, sum: item.sum} } => [{:idx=>0, :sum=>10}, {:idx=>1, :s…

AWSのEC2とポート転送を利用して企業の網を抜けた話

rails、全然関係ないが。。。 僕の勤務先の会社では、インターネット接続に制限があります。 ファイルを勝手にダウンロードしたら怒られる。 15分おきにインターネット接続が強制切断され、そのたびに認証しなければいけない。 リクエスト全てが監視されてお…

delegateが便利。

Hoge.rb .... has_many: fuga def foobar .... Fuga.rb ... belongs_to hoge delegate :foobar, to: :hoge ... とすると、 Fuga.foobar って感じなのができるようです。 delegate (Module) - APIdock

欲望を我慢する

目標を達成するためには、数多くの欲望を犠牲にしなければいけない とはいうものの、小さい欲望は日々生まれてくるのである。 心が折れてしまいそうになることもある。 でも、その時思い出して欲しい。 心が折れた時に無駄にしてしまった時間のことを。 その…

人によく見られたいと思うと、人が怖くなる

人によく見られたいという気持ちがあると、人の動向をいちいち気にして、怯えてしまうことに気が付きました。 怯えるとどうなるのか? 無難な行動しかとらなくなる 自分の意見を言わなくなる 失敗を恐れる 大丈夫か?大丈夫か?という自問自答を何度も繰り返…

他人に原因を求めると、どうなるか

他人に原因を求めると、解決が困難になります。 他人に原因を求めることで自分を守ることができます。 しかし、他人の悪い所を探すようになり、嫌な気分になりやる気がなくなってしまいます。 他人に原因があるわけですから、自分から解決に向けて行動するこ…

仕事を早く終わらせるために実践していること

会議に出ない 「私の場合は」なのですが、会議に出席しても無駄なことが多いです。 意見は会議前に出席者へ伝達し、会議後に議事録で確認します。 2時間以上の会議が、私は20分程度で済みます。 会議の内容は、大抵下らない愚痴なので(あくまで、「私の…

PO(プロダクトオーナー)から素早く返事をもらうためにはどうすればいいか

POの返事がどうも遅い。 どうして遅いのだろう、と考えたときに相手側に原因を求めていたのでは、解決が難しくなる 結論からいうと、次の施策を試してみることにした。 簡潔、明瞭、かつ、少ない文量の話し言葉でYes/Noを答えてもらう質問 理由を付けて期限…

タスクが大きくなる前にWIPを作って相談すること

簡単だと思っていたタスクを進めていくと、大きいタスクになることってありませんか? そのまま誰にも相談せずに進めた場合、大きな手戻りとなる可能性があるので要注意です。 早めに相談しましょう。 rails案件の開発において、具体的な解決策として早めにW…

機能が大きいと着手できなくなり、リリースされない

ある機能を追加しようという話になったとき。 組織の中で検討するとあれが必要、これも必要、この手順を踏んで、あの手順も踏んで... といった具合に、雪だるま式に機能が大きくなっていく樣をしばしば見かけます。 そうすると何が起こるか。 開発リソースが…

hamlいじったら.htmlファイルが量産されるようになったときの対処

IntelliJ IDEA14でがちゃがちゃしてたら、突然.htmlファイルが量産されるようになってしまった。 突然、というか、僕がなんかしたんだろうけど。 プロジェクトを作り直して、hamlファイルを見てみたら、こんなんが出てきた。 たしかに、いじった気がするので…

railsでtimeを扱うときのおすすめ

Time.zone.now or Time.current RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita RubyのDateTimeとTimeはどちらを使うべきか - yarbの日記 RubyのDateTimeとTim…

rails cookieから属性を消す

cookieから属性を消すことは重要です。 rails4ではcookieの内容は暗号化されてclient側に保存されていますが、 復号化せずにサーバーに送信すれば正常なcookieとして取り扱われるため、cookieファイルを盗まれるとなりすましが可能となります。 cookieに有効…

cookieのsecure属性について

cookieのsecureをtrueにする。 trueにした属性は、https以外の通信でcookieを送信しなくなる。 httpsとhttpの行き来がある様なサイトは、セッションIDなどをsecure属性にしないとセッションハイジャックされる可能性がある。 secure属性と直接関係はないが、…

rails localでhttpsの通信を受け付ける

スクリプトを作成して、実行するという流れ。 bin/rails_https #!/usr/bin/env ruby # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. APP_PATH = File.expand_path('../../…

ruby ifしつつ代入

if bar = @foo[:aaa] #=> foo[:aaa]があれば、barに代入されて、この分岐の中にはいる!!