devise x omniauth-twitter x bootstrap-social にてTwitterサインインボタンを出力する


めっちゃ苦戦した。ポイントは link_to の文字列をなくしてdo-endで囲み、中にspanを置くことと、'twitter`が文字列でなくシンボルなこと。

## app/views/devise/shared/_links.html.erb
<%- if devise_mapping.omniauthable? %>
  <%- resource_class.omniauth_providers.each do |provider| %> 
    <% puts provider.class %> 
    <% if provider == 'twitter'.to_sym %>
      <%= link_to omniauth_authorize_path(resource_name, provider), class: "btn btn-block btn-social btn-twitter" do %>
        <span class="fab fa-twitter"></span>Sign in with Twitter
      <% end %>
    <% else %>
      <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
    <% end %>    
  <% end %>
<% end %>

bootstrap-socialはGithubのbootstrap-social.cssapp/assets/stylesheets配下に配置しようとしたが、bootstrap自体の読み込みをapp/javascript/src/application.scssでやっていたので、scssファイルとして同階層に配置し@import 'bootstrap-social.scssとしたものの、読み込み順が違ったりBootstrapのバージョンなのか、Fontawesome5を使っているからなのかレイアウトが崩れたりする。

結局、必要なCSSを Developer Tool を開きながら抜き出す形に‥。つまり言いたいのはTwitterボタンのデザイン適用方法はここのBootstrapのインストール方法によるので何とも言えないってこと。色々と非効率だし美しくない‥。