CentOS|SSHログイン時にアスキーアートを表示する
なにがしたい
sshでサーバにログインした時に、AAを表示することでどのサーバにログインしたかをわかりやすくしたい。
HOW TO
1.AAを作成
Text to ASCII Art Generator (TAAG)
2./etc/motdに上記で作成したAAを記述
______ _ _ _ | ___ \ | | | | (_) | |_/ / __ ___ __| |_ _ ___| |_ _ ___ _ __ | __/ '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ | | | | | (_) | (_| | |_| | (__| |_| | (_) | | | | \_| |_| \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_| Production 本番
3.試してみる
$ ssh production Last login: Wed Jul 13 15:41:47 2016 from 172.16.100.15 ______ _ _ _ | ___ \ | | | | (_) | |_/ / __ ___ __| |_ _ ___| |_ _ ___ _ __ | __/ '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ | | | | | (_) | (_| | |_| | (__| |_| | (_) | | | | \_| |_| \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_| Production 本番
イエイ!
くれぐれも「STGと間違って本番にデプロイしちゃった☆」みたいなことがないようにしましょう!
Rails|Emailのバリデーション
背景
はじめはemail_validatorを使用していたのですが、
「hogehoge@hoge.com」のように入力された時、うまくバリデーションがかからなく・・・。
あらためて調べてみると、以下の場合はうまくバリデーションがかかっていないようでした。
- 先頭に半角/全角スペース許容してる
- 全角を許容してる
うーむ、困った。
解決方法
1.email_validatorに代わってvalidates_email_format_ofを使用する
- @前は64文字以内であること
- 全角は弾く
- 先頭/email中/末尾の全角スペースは弾く
- email中の半角スペースは弾く
上記ちゃんとチェックしてくれているようです。
2.先頭/末尾の半角スペースを弾く
バリデーションをかける前に、不要なスペースを排除します。
Stringクラスのstrip
は前後の空白文字を削除してくれる強いやつ。
class User < ActiveRecord::Base before_validation :remove_space # バリデーション前に前後の空白文字を削除 def remove_space self.email.strip! end # validations validates_presence_of :email, message: "入力必須です。" validates_length_of :email, in: 0..100, message: "100文字以内で入力ください。", if: :email? validates :email, :email_format => {:message => '正しいメールアドレスの形式で入力ください。'} end
iOS開発|Images can't contain alpha channels or transparencies
iTune Connectの画像登録での一コマ
Images can't contain alpha channels or transparencies
↑ iTune Connectの画像登録ででた注意文言
「App Preview and Screenshots」の画像をリサイズして登録しようとしたときに発生。
原因
画像をリサイズした際に、縦横比が変わってしまったせいで発生したもよう。
比率を変えた際に埋めた部分が透過されているよと怒られているようです(詳しく調べてないのでおそらく)。
解決策
PNG形式で保存したため起こった現象なので、JPGで保存し直すことで解決しました。
Rails|レイアウトを新規で作成する
なにがしたい
Viewを表示する際に、「layout.html.erb」とは別のレイアウトを作成して適応したい。
シチュエーション
上記の方法でerror画面をカスタマイズすると、Viewに対応するコントローラーがないため、「Template Inheritance※」ができない。
そのため、error画面を出す際、メタ情報や読み込むCSSの内容が変わるためレイアウトを別に用意したい。
※ 例)errors配下に_meta.html.erb
を切り、application.html.erb内で以下のように呼び出す。
<%= render partial: 'meta' %>
HOW TO
1.view/layout/error_layout.html.erbを作成
2.application.controllerのエラーページをレンダリングしている箇所で、error_layout.html.erbを指定する
def render_404(exception = nil) if exception logger.info "Rendering 404 with exception: #{exception.message}" end render template: "errors/error_404", status: 404, layout: 'application' render template: "errors/error_404", status: 404, layout: "error_layout" #error_layout.html.erbを指定する end def render_500(exception = nil) if exception logger.info "Rendering 500 with exception: #{exception.message}" end render template: "errors/error_50x", status: 500, layout: 'application' render template: "errors/error_50x", status: 500, layout: "error_layout" #error_layout.html.erbを指定する end
Rails|エラーページのカスタマイズ
なにがしたい
エラーページをいい感じにカスタマイズしたい。
HOW TO
1. view配下にerrorsディレクトリを切り、「error_404.html.erb」と「500.html.erb」を作成 2. application_controller.rbに下記を記述
class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception rescue_from ActionController::RoutingError, with: :render_404 rescue_from Exception, with: :render_500 # 404ページをレンダリング def render_404(exception = nil) if exception logger.info "Rendering 404 with exception: #{exception.message}" end render template: "errors/error_404", status: 404, layout: 'application' end # 500ページをレンダリング def render_500(exception = nil) if exception logger.info "Rendering 500 with exception: #{exception.message}" end render template: "errors/error_50x", status: 500, layout: 'application' end end
3. route.rbの最後に下記を記述 その上に書かれているパス以外のリクエストが来たら、404ページに遷移させます。
get '*path', to: 'application#render_404'
Rails|Cannot add foreign key constraint エラー対処
困ったシチュエーション
後でマスターテーブルを追加しようとした際、以下のエラーに遭遇。
Mysql2::Error: Cannot add foreign key constraint: ALTER TABLE `application_forms` ADD CONSTRAINT `fk_rails_386b13f566`
え、どういうこと?
原因
マスターテーブルを後から作成したため、以下の順でマイグレートが当たっていた。
しかし、1のentriesテーブルで2のマスタテーブルを参照しているため、叱られていた。
- 20160617063944_create_entries.rb
- 20160620063943_create_mst_categories.rb
解決方法
マイグレートファイルの名前を修正し、正しい順番でマイグレートが当たるように修正する。
- 20160620063943_create_mst_categories.rb
- 20160621063944_create_entries.rb