rails g で使われるテンプレートをSlimで作成する際の <%% 部分の記載方法

こんにちは。
この記事では表題の通りrails gの時に使用されるテンプレートを、
Slimでかいた時に<%%部分の記載方法でつまり、またWEBで適切な記事が見つけられなかったので、備忘録として残しておく。

基本のどのようにしてrails g時に使われるテンプレートをSlimで作成するかについては、
以下の記事を参照してください。
RailsのScaffoldのテンプレートをカスタマイズする – Qiita

結論から申し上げると”そのまま”書けばよかったということなのだが、
<%% をそのまま書くわけではない。以下、解説します。

Rails5 標準のrails g用のテンプレートの中にERBで以下のように記載されている部分がある。



<table>
  
<thead>

<tr>
<% attributes.reject(&:password_digest?).each do |attribute| -%>
      
<th><%= attribute.human_name %></th>

<% end -%>
      
<th colspan="3"></th>

    </tr>

  </thead>


<tbody>
    <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
      
<tr>
<% attributes.reject(&:password_digest?).each do |attribute| -%>
        
<td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>

<% end -%>
        
<td><%%= link_to 'Show', <%= singular_table_name %> %></td>


<td><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>


<td><%%= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>

      </tr>

    <%% end %>
  </tbody>

</table>



<%% だらけである。
また <%% %><%= %> がネストされていたりする。
私が使った ERBtoSlim のコンバーターでは文字列に変換されてしまう。


table
  thead
    tr
      - attributes.reject(&:password_digest?).each do |attribute|
        th= attribute.human_name
      th colspan="3" 
  tbody
    | \% @%= plural_table_name %&gt;.each do |#{singular_table_name}| %&gt;
    tr
      - attributes.reject(:password_digest?).each do |attribute|
        td
          | \%= %= singular_table_name %&gt;.#{attribute.name} %&gt;
      td %= link_to 'Show', %= singular_table_name %&gt; %&gt;
      td
        | \%= link_to 'Edit', edit_%= singular_table_name %&gt;_path(#{singular_table_name}) %&gt;
      td %= link_to 'Destroy', %= singular_table_name %&gt;, method: :delete, data:   confirm: 'Are you sure?'   %&gt;
    | \% end %&gt;

早速解決方法を。
単純に <%%- <%%== とし、
ネストされている <% %><%= %> はそのまま記載すると、 rails g で正常にテンプレートを生成してくれる。


table
  thead
    tr
      - attributes.reject(&:password_digest?).each do |attribute|
        th= attribute.human_name
        th colspan="3" 
  tbody
    - @<%= plural_table_name %>.each do |#{singular_table_name}| %>
      tr
        - attributes.reject(:password_digest?).each do |attribute|
          td
            = <%= singular_table_name %>.#{attribute.name} %>
        td <%= link_to 'Show', <%= singular_table_name %> %>
        td
          = link_to 'Edit', edit_<%= singular_table_name %>_path(#{singular_table_name}) %>
        td <%= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data:   confirm: 'Are you sure?'   %>

エディター上では、シンタックスエラーとして扱われて、
エラーのハイライトが出たりすると思われるが、これで正常に動作する。
RubyMineを使っているが、警告が出ている。

以上

AWSの無料SSL証明書を独自ドメイン(サブドメイン)で使用する方法 EC2 ELB

今回の記事では、AWSに立てているWebアプリケーション用のEC2インスタンスに
Amazon Certification Manager (以下ACM)で提供されている、無料SSL証明書を設定する方法を解説します。
そんなに頻度は高く無いものの、必ず年間何度かはする作業工程なので、備忘録も兼ねて投稿します。

※ 詳しい解説に、後日アップデートしますので今回はドラフト的に必要事項だけ記載します。

■ご注意
・すでに対象となる EC2のインスタンスは動作しており、独自ドメインも取得済みという状態からのステップです。
・今回はRoute53は使わず、ドメインを保持しているサービスのDNSから繋げる形にします。

■こんなケースに最適
・AWSで公開するサイトと別のサーバーで公開するサイトを同一のドメイン(別のサブドメイン)でアクセスできるようにしたい。

前ステップ
1, 独自ドメインの admin メールアドレスを作成する: 重要
2, ACMで新規に証明書を取得する
– 1のメールアドレスで承認メール受信・承認作業
– この作業は必須なので、先にadmin@独自ドメインのメールアドレスで、受信できるようにしておかないとやっかいです。
3, ELB設定
– httpsしか使わない予定でも、httpをリダイレクトする形にするほうが良いので、ELB設定は両方を受け付けるようにする
– 2のACM証明書を選択して設定を完了する
– セキュリティグループは専用のものを新規で作成する
– ロードバランサーの種類はクラシックを選択する
4, EC2インスタンスのセキュリティグループの設定
– ELBのセキュリティグループからのインバウンドを許可する
5, 独自ドメインのDNS設定の CNAME に ELB の DNS 名 を設定する
– AWSコンソールには Aレコード と書かれているが、 CNAME に設定しないといけないのがみそ
6, http の httpsへのリダイレクト設定(optional)
– 必要な場合は行う。
– 参考記事1: http://qiita.com/snoguchi/items/f5ccb67592f87942480d
– 参考記事2: http://qiita.com/kazunari-yamashiro/items/63793a02d66b6c48ec09

以上が大まかなステップです。

また後日、スクリーンショットなどを交えて、わかり易く解説をしていく予定です。

2017年1月7日 更新
・Xserverをドメインのネームサーバーに設定している場合は、利用不可。
・Z.comはこの方法で利用可能