日常

ケ・セラ・セラ

Rails5でforce_sslのredirect status, HSTS header のコントロールが便利になる

読んだので簡単にまとめてみる試み。force_ssl 関連。

RailsHTTPS を強制する config.force_ssl = true' を設定すると、middleware stack にActionDispatch::SSL` が挿入されるわけだけれど、ActionDispatch::SSL は3つの責務を担うね。

  1. http request を https request に redirect する
  2. browser に伝えるために secure flag をセットする
  3. response に HSTS ヘッダを追加する

Rails 5 からは HTTP status を指定することができる(default: 301)。

refs.

config.force_ssl = true
config.ssl_options = {  redirect: { status: 307, port: 81 } }

こちらがマージされて、non-(GET or HEAD) なリクエストの場合には default で 307 となった

HSTS header の preload directive や、max-age の設定はこのようにできる

config.ssl_options = { hsts: { preload: true } }
config.ssl_options = { hsts: { expires: 10.days } }

Rails5 では false にすると expires には 0 がセットされ、HTTPS として扱わなくなる

config.ssl_options = { hsts: false }

querySelectorとJQueryでcssをいじるメモ

querySelector で

foo = document.querySelector("#bar li a.baz");
color = foo.style.color;
bg_color = foo.style.backgroundColor;
foo.style.color = bg_color;
foo.style.backgroundColor = color;
foo.style.borderStyle = "solid";
foo.style.borderWidth - "1px";
foo.style.float = "right";

JQuery

foo = $("#bar li a.baz")
color = foo.css("color")
bg_color = foo.css("background-color")
foo.css("color", bg_color)
foo.css("background-color", color)
foo.css("border-style", "solid")
foo.css("border-width", "1px")
foo.css("float", "right")

転職ドラフト登録してみている

おもしろそうと思って今まさに登録してみているけれど、登録に際していくつか入力することがあって、入力しながら色々と考えることもあったので書き残しておこうと思う。

自信を持って人より秀でていると言える点は? という質問があって、選択肢から最大 3つ選択するみたいなのがある。こんな感じの選択肢。

学習能力 企画立案力 プレゼン力 分析力 調整力 問題解決力 交渉力 責任感 巻き込み力 経営判断力 営業力 人を集める力

人より秀でているって何だろう。自分が得意と思う分野を選択するわけではなくて、人より秀でていると言える点かー。それはもっと各選択肢を細分化した内の1つになるだろうなー。みたいな感じなので、これら選択肢には "主語が大きい" に似た印象を持ってしまい、結局どれも選択出来なかった。しかしまあ、どれが長所なのか?という問いなんだとは思う。

水とプログラミングどっちが大事? そんなの水に決まってるだろ。

"OSSのコミッターである" という項目については、全然無名OSSだけどなと思いつつチェックした。もっとどうにかしていきたいものです。

Rails5 で alias_method_chain が deprecated

短くまとめてみる試み。

rails5 で alias_method_chain が deprecated となる。Module#prepend を使っていくことになる。

また、ruby 2.1 で Module#include と Module#prepend が public method になったよね。

こんな風に

# In ruby 2.0
Person.send(:prepend, Flanderizer)

# In ruby 2.1
Person.prepend(Flanderizer)

form submit ボタンにリンクっぽくfont awesomeを使う

メモです。

例えばこんな、fontawesome のハートマークをクリックしたら submit して likes/create or likes/destroy したいような状況ですが、

      <%= form_for(current_user.likes.build,
        html: { class: "form-inline" }) do |f| %>
        <div><%= hidden_field_tag :article_id, article.id %></div>
        <%= button_tag type: 'submit', class: "button-as_link" do %>
          <i class="fa fa-heart-o fa-lg c-like"></i>
        <% end %>
      <% end %>

font awesome を使いたくて、button をリンクのような見た目にしたかったのです。

こんな風に css を書いてそれっぽくなりました。(クラス名はちょっとひどいので後で整理しないといけない認識あります。。)

.button-as_link {
  background: none;
  border: none;
  padding: 0;
}

.form-inline {
  display: inline-block;
}

HerokuでRubyのバージョンを指定する

heroku に deploy したアプリがこけていて、なんだ?と思ったらぼっちオペレーターを使ったからだった。そういえば ruby のバージョン指定を忘れて 2.2.4 が使われていた。

やり方は、Gemfile に書けばよい。

source "https://rubygems.org"
ruby "2.3.1" # for heroku

現在の ruby のバージョンは以下のように見られる。

heroku run 'ruby -e "puts RUBY_VERSION"'