2016-01-01から1年間の記事一覧
最近社内で短時間勉強会を行っている。 特徴としては、 1時間〜1時間半くらいで終わる 参加者、主催者が特に事前準備をしない ことがあげられる。 たとえば"他事業部のサービスのソースコードを読む会"をやったときは、 30分間他事業部のサービスのソースコ…
HashからOpenStructを作成する場合、 pry(main)> OpenStruct.new({hoge: 1}) => #<OpenStruct hoge=1> pry(main)> OpenStruct.new({hoge: 1}).hoge => 1 のようにすればよい。 しかしネストしたHashだと以下のようになる。 pry(main)> OpenStruct.new({hoge: {fuga: 2}}) => #<OpenStruct hoge={:fuga=>2}</openstruct></openstruct>…
FactoryGirlでARではなくhashのモックデータを返してほしいときがある。 そういう場合は以下のようにすればよい。 FactoryGirl.define do factory :dog, class: Hash do id 1 name 'john' color 'black' initialize_with { attributes } end end initialize_…
Capybaraで非表示(style="display: none;")になっている要素を検索対象にできないか調べたら、 visibleオプションが使えることが分かった。 例えば、以下のような感じだ find("#hoeg", visible: false) have_selector('.hoge', visible: false) have_css('#h…
テンプレートエンジンのSlimのスタイルガイドはないものかと探していたら見つけた。 https://github.com/idmean/slim-style-guide Slimはシンプルなのでそんなにどう書くか決めなくても大丈夫なんだけど、いくつかは迷うときがある。 例えば属性の定義は以下…
エンジニア飲み会があったので、ちょうど調べていたAPI BlueprintについてLTをした。 スライド↓ API Blueprintとその周辺ツール API Blueprintは読み書きしやすいのが特徴だ。 JSON SchemaはAPIドキュメントとしてはそのままだと読みにくいし、Swaggerはなん…
http://shepherdmaster.hateblo.jp/entry/2016/08/21/000115 でも紹介しましたが、 https://github.com/kickstarter/rack-attack という便利なgemがあります。 n秒間にn回アクセスされたらアクセスを弾くThrottles機能を使う場合、 IP単位でアクセス数を数え…
https://github.com/kickstarter/rack-attack という便利なgemがあります。 特定のアクセスのみを許可するSafelists機能や、特定のアクセスを弾くBlocklist機能や n秒間にn回アクセスされたらアクセスを弾くThrottles機能、特定のアクセスを記録するTracks機…
method 'GET' みたいに定義するとエラーになる。 その場合は、 add_attribute :method, 'GET' のようにadd_attribute を使うと回避できる。 またmethod以外にもエラーになる名前があって、以下がそのリスト。 __send__ __id__ nil? send object_id extend in…
先週くらいから朝8時くらいに出社するようになった。 きっかけとなったのは以下の記事だ。http://kitak.hatenablog.jp/entry/2016/07/04/182403 なんで朝早く出社しようと思い立ったかというと、 ・今の会社は10時出社で昼が12時からなので午前が2時間しかな…
Railsでアプリケーション開発をしていると、深淵なる理由で生のSQLにテーブル名やカラム名を動的に埋め込みたいケースが出てくる。 その場合安全だと分かっていてもサニタイズしないでSQLに文字列を埋め込むのは気が引ける。 そういう場合は、 ActiveRecord:…
本番環境でrake db:migrateを実行する場合、はたしてどのmigrationが実行されるのか確認したくなる場合がある。 その場合、rake db:migrate:statusを実行すると未実行のmigrationが表示されて便利だ。 たとえば、以下のような場合downとなっているのが未実行…
RSpecで既存のとあるメソッドが呼びだされたら特定の値を返したい場合、 allow(model).to receive(:foo).and_return(14) みたいにant_returnすればよい。これは有名。 しかし深淵なる理由でメソッドを上書きたい場合がでてくる。テスト中に特定の値を返すの…
大規模なRailsアプリケーションだったり、旧来のシステムをRailsに置き換えたりしてると、どうしても複数DBを扱いたくなってくる。 その場合は例えば、以下のようなlib/tasks/database_foo.rakeを作成します。 namespace :foo do desc 'Configure the variab…
mail gem使って、multipartメールでかつファイルが添付されたメールを送信したら、 Content-Type: multipart/mixedではなくContent-Type: multipart/alternativeになってしまい、 Thunderbirdでは添付ファイルが認識されず、MacのメーラーではHTML本文が表示…
mail gemを使っていて Non US-ASCII detected and no charset defined. Defaulting to UTF-8, set your own if this is incorrect. の様な警告が出る場合は、 mail.text_part do body 'あああ' content_type 'text/plain; charset=UTF-8' end mail.html_part…
Fluentdの作者の古橋さんが作って、Treasure Dataで使われているというメッセージキュー、 perfectqueue。 動かしてみようと思ったら全然ネットに資料がなかったので頑張って動かしてみました。 大きな特徴としてはMySQL上でキューイングシステムを構築する…
メール本文のデコード まずgmailの"メッセージのソースを表示する"をクリックする。 encodingがbase64でcharsetがUTF-8の場合 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 pbpaste | nkf -mB encodingが7bitで、charsetIS…
yahooのメールにtelnetからSMTPを使ってメール送信してみます。 $ telnet smtp.mail.yahoo.co.jp 25 Trying 183.79.29.237... telnet: connect to address 183.79.29.237: Connection refused telnet: Unable to connect to remote host はい。Connection re…