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を使っているが、警告が出ている。

以上

UbuntuでLAN内PCから接続可能なMySQL ServerとRedis Sereverを常時起動しておく方法

今回は個人的に遊ぶために購入したParallellaが文鎮状態(軽くて文鎮にもならないが)だったので、
社内で有効活用しようとおもいセットアップを行ったので、その解説を書いていこうと思う。

Railsの開発プロジェクトが同時進行しており、
すべて一つのDBにおさめて、社内共有して開発をしたいと思ったのが
今回のきっかけ。

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

■ご注意
・Parallellaはparabuntuインストール済みで、SSH接続可能な状態とします。

■こんなケースにつかえるかも
・ローカル内でLinuxをMySQLサーバー、Redisサーバーとして使いたい時

MySQLの設定

まずは通常通り初期設定を行う。
今回はメインマシンからSSH接続でインストール

sudo apt-get install mysql-server

その後、社内LAN上のPCから接続できるようにuserを作成


# 接続
mysql -u root -p

# ユーザー作成と権限設定
grant all on *.* to 'username'@'192.168.1.%' identified by 'password';

上記例は社内からすべてのテーブルにアクセスできるルートユーザーとして作成している。
@以降のホストIP部分は、それぞれの環境に応じて適宜、変更をしていただきたい。

これで、MySQLの設定は完了。あとはそれぞれRailsの database.yml の設定を変えてもらうだけ。

Redisの設定

若干詰まるであろうはRedisである。
ただ起動するだけではなく、一手間必要。

まず redis.conf を作成する。
今回はユーザーディレクトリ直下に作成した。


vim redis.conf

redis.conf に記載した内容は以下の内容のみ


# parallella からSSHを切ってもそのまま生きるようにデーモン化
daemonize yes

# デーモン化するのでログは、stdoutでは無くファイルに
logfile /home/{user}/redis.log

# PID出力先もわかり易い場所に指定
pidfile /home/{user}/redis.pid

bind オプションはあえて指定しないことで、すべてリッスンするようにしている。
confファイル無しで起動すると、デフォルトでは localhost に限定されるようだ。

後は、作った conf ファイルを指定して、起動するだけ


redis-server /home/{user}/redis.conf

以上で完了。

RailsのRedis関連のrbファイルで、
ホストにRedisを起動しているPCのIPを指定(今回の例だとParallellaのローカル内IP)

RubyMine を使っているのでプロジェクト全体検索で redis を検索したら、
指定箇所が見つかったので、すべて書き換え。

Redis.new(host: "{IPadredd}", post: 6397)

後は rake db:migrate してから、rails s で問題なく起動できれば完了です。

P.S.
ネットワーク内の機器のIPを調べる方法は色々あるが、
個人的にはiPhoneのFingというアプリが使いやすいと思っている。
見やすく操作も楽なので、オススメです。

Adobe XD で作成したカンプデータをPSDにする方法

この記事では、少し前に登場したUXデザイン用アプリケーションAdobe User Experience (XD)で作成したデータを
PSDに変換する方法をお伝えします。

簡単な方法ではありますが、ポイントを押さえていないと、
色が変になったり、データサイズがデカすぎたりと
せっかく作ったデザインデータがWT◯な状況になり兼ねないので、
備忘録も兼ねて解説します。

前回の記事と同じく、時間ができた時にSSなどを付けて詳しく解説します。

必要なもの
・Adobe XD
・Adobe Illustrator

Adobe XD単体で契約しているケースは少ないと思いますので、
フル契約ならAIもお持ちでしょう。

オンライン上のコンバートなども有るが、思いしおかしい PSD が出来るケースも多かったので、
この方法をおすすめしたい。

1, AdobeXDでデザインデータを作成する
2, AdobeXDでデータを PDF に書き出す
ショートカットキー

Cmd / Ctrl + E

3, 書き出した PDF を AI で開く
4, ファイル > 書き出し > 書き出し形式… で、PSDに書き出す。※ここに注意点有り
– カラーモードをRGBにする
– 解像度をスクリーン (72ppi)にする
– デフォでは 150ppi になっているので大きすぎる
– レイヤーを保持
– テキストの編集機能を保持 と 編集機能を最大限に保持 にチェック
– アンチエイリアスはお好みで
– WEBデザインなどであれば、おそらく文字が多いだろうから 文字に最適 の方が良いでしょう
– IICプロファイルを埋め込む にチェックを付ける
– これをしないと色がおかしくなる可能性あり

XDを持っている先に、デザインを提出するときは XD で共有すればよいが、
まだ若いソフトなので、導入していないところも多いであろうし、
実際、PSDで要求されることも多い。
いつかXDがデファクトスタンダードとなる日が来ればありがたい。

P.S.
略称が XD なのだが、完全に顔文字でしかないので気に入ってます。

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はこの方法で利用可能