ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

RailsのActiverecordeで既についているNot null制約を外す

ActiverecordeでカラムにNotNull制約をつけてしまったけど、 やっぱり、NotNull制約を外したいなんて時ありますよね。 そんな時は、 change_column_null マイグレーションファイルを下記の用になります。 class ChangeNotNulToUser < ActiveRecord::Migratio…

Rails simple_formatの勝手につく<p>タグを削除したい

Railsのsimple_formatを使うと勝手にタグで囲まれます - text = 'aaaaa' = simple_format(text) みたいにすると <p>aaaa</p> と出力されます そんな時に、 <p> => <div> にしたい時は - text = 'aaaaa' = simple_format(text, {}, wrapper_tag: "div") とすると。 <div>aaaa</div> にた</div></p>…

Googleスプレッドシートのショートカット一覧

MacのGoogleスプレッドシートのショートカット一覧です。 個人的には、ショートカットで行を挿入 「control+option+I、R」 したかっただけですが、 いちよう一覧で記載しておきます。 ご参考まで 一般的な操作 項目 ショートカットキー 列を選択 control+spa…

lazyload.jsの使い方まとめ

色んな使い方があるんですね。 参考になります。ありがとうございます。 cly7796.net 関連記事 marketing-web.hatenablog.com marketing-web.hatenablog.com jQuery最高の教科書作者: 株式会社シフトブレイン出版社/メーカー: SBクリエイティブ発売日: 2013/…

DEPRECATION WARNING cleanup! is deprecated and will be removed from Rails 5.1

Rails5でdelayed_jobを起動したら、以下のようなWARNINGが出力されました。 DEPRECATION WARNING: cleanup! is deprecated and will be removed from Rails 5.1 (use Rails.application.reloader.reload! instead of cleanup + prepare) (called from <top (required)> at bi</top>…

autocomplete off 対策には、autocomplete new-password

クロームなんかで、パスワードフィールドに勝手に入力してくるのやめて欲しいなと思って autocomplete='off' を設定しても、効かないじゃん!って思ったことありませんか? そんなときは、new-passwordです。 autocomplete='new-password' そうすると、空で…

RailsのAction Mailerを使ってSendGridのカテゴリーを設定する

RailsのAction Mailerを使ってSendGridのカテゴリーを設定する方法です。 まずSendGridはこちら sendgrid.kke.co.jp SendGridは、主にメール配信のサービスになります。 最近使いはじめて、最高に便利なサービスです。 無料の利用枠もあるので、興味のある方…

ActionView::MissingTemplateの対策

ActionView::MissingTemplate そうです。 Railsでviewでテンプレートが無いときに発生します。 基本的には、テンプレートを準備しなかったミスだとは思うんですが、 動的に部分テンプレートを見つけて描画したりするときなどは、 もしテンプレートがあれば、…

Awesome Nested Setのチートシート

こちらRailsのカテゴリを階層で管理してくれるGem Awesome Nested Setです github.com そのチートシートです。 github.com 主に使いそうなところ これで一気にループ回せます。 Category.each_with_level(Category.root.self_and_descendants) do |category,…

GitHubでForkしたリポジトリをmargeする

Git

下記の様に、cloneして作ったリポジトリに対して、親のmyapp.gitをmargeする方法です。 $ git clone git@bitbucket.org:xxxxxx/myapp.git org_originという名前で、親のリポジトリを参照できるようにします。 $ git remote add org_origin git@bitbucket.org…

RubyでStringを配列に変換する

rubyでStringを配列に変換する方法です。 使う関数は split(pattern) です。 たとえば 080-1234-5678 を tel = '080-1234-5678' tel.split('-') すると ["080", "1234", "5678"] という感じに配列に変換してくれます。 配列に分割出来なかったら 例えば、 “0…

AWS EC2のAmazonLinuxでタイムゾーンをUTCから日本時間に変更する

作業は主に2つ /etc/sysconfig/clockの編集 /etc/localtime のリンク先に東京の時間帯ファイルを設定 /etc/sysconfig/clockの編集 /etc/sysconfig/clockに設定されている タイムゾーンをUTC から Asia/Tokyo に変更します vim /etc/sysconfig/clock ZONE="As…

RailsのSTI(Single Table Inheritance)を無効にする

RailsのActiveRecordでtypeカラムがあると、STI(Single Table Inheritance)としてテーブルを使おうとします。 一つのテーブルでtypeの値によって複数のモデルが共有する感じです。 これ、とても便利なんですが、意図せずtypeカラムがあってもSTIとして扱いま…

RailsのActiverecordでkeyがid ValueがmodelオブジェクトのHashを作りたい

簡易的にN+1問題に対応しようとした時に、 Keyがid, ValueがそのモデルのオブジェクトのHashが欲しい時がありました。 そんな時は、index_byが良いっぽいです。 たとえば、Itemモデルで下記のようなテーブルがあって id name code 1 あああ aaaa 2 いいい bb…

Railsで複数チェックボックをstrong parametersで取得する

Railsでチャックボックスのフォームを使おうとすると毎回迷走します。 複数チェックボックを設定してそれを、controller側でStrong parametersで取得する方法です。 ItemのidをチェックボックスのValueに設定しています。 view (省略) - @items.each do |ite…

Rubyで数値を0詰めする方法

Rubyで数値を0詰めする方法です sprintfを使って フォーマットさせます sprintf("%03d", 3) 結果は "003" になります。 関連記事 marketing-web.hatenablog.com marketing-web.hatenablog.com たのしいRuby 第5版作者: 高橋征義,後藤裕蔵,まつもとゆきひろ…

サイトの背景と文字色で参考になるサイト

こちらです。 www.hp-stylelink.com 文字色 白に対して色んなシーンのパターンが紹介されています。 おっしゃれな感じでとても参考になります。 関連記事 marketing-web.hatenablog.com 伝わるデザインの基本 増補改訂版 よい資料を作るためのレイアウトのル…

Nginxで特定のlocationだけベーシック認証を除外する方法です 基本的には、全体に的にベーシック認証をかけて、特定のディレクトリ(ロケーション)だけベーシック認証なしでアクセスできるように 設定する方法です。 auth_basic "Restricted"; auth_basic_use…

Amazon RDS(Postgres)からdumpをとってrestoreする方法

Amazon PostgresのRDSから dumpを取得して、restoreする方法です。 RDSに限ったことでは無いかもしれませんが、 今回、RDSのデータを元にlocalのDBを作りたかったく その作業メモです。 基本は以下の通りです。 pg_dump -Fc -v -h [endpoint of instance] -U…

Rubyで日付の文字列からDate型Objectに変換する方法

タイトルの通り日付の文字列からDate型Objectに変換する方法です。 そんなときは、Date.parseが便利で Date.parse('2017-01-01') とすると、変換してくれます。 関連記事 marketing-web.hatenablog.com marketing-web.hatenablog.com たのしいRuby 第5版作者…

Postgresのシーケンス(sequence)の番号をupdateする方法

タイトルの通り PostgreSqlでシーケンスの番号をupdateする方法です。 下記のクエリーを実行 SELECT SETVAL ('シーケンス名', '番号'); 以上です。 関連記事 marketing-web.hatenablog.com marketing-web.hatenablog.com 内部構造から学ぶPostgreSQL 設計・…

ディレクトリ内のファイル容量をチェックする方法

dfコマンドを叩いて以下のような結果が出た時に、 実際に何処のディレクトリが増えてるのと思うことがあります。 ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/xvda1 30830568 16642096 14088224 55% / そんなときは、 du コマンド ディレ…

Rails + Nginx環境で強制的にURLの最後に / を付ける方法

表題の通り、Rails + Nginx環境で強制的にURLの最後に / を付ける方法です。 そもそもなぜ付ける必要があるのか? そうです。Google大先生に怒られたことがきっかけです。 Search ConsoleのHTMLの改善の項目で、重複するメタデータとして /item/12345/ /item…

Rails4で現在のURLを取得する。

Viewで現在のURLを取得する方法です。 すぐ忘れてしまうので自分の備忘録。 http://www.example.com/にアクセスしたばあい url = request.url p url すると、結果は http://www.example.com/ pathを使うと path = request.path p path 結果は、 / となります…

無料なSSL Let’s Encryptを使ってみた。EC2(amazon linux) + Nginx + Rails

無料で使えるSSL証明書があるということでLet’s Encryptを早速 試してみました。 Let’s Encryptの公式サイトはこちら letsencrypt.org 環境 今回導入に試してみた、環境としてザックリと以下のようになります。 AWS EC2 (amazon linux) Nginx Ruby on Rails …

Railsのmigrationのremove_indexで名前を変更したIndexを削除する方法

Railsのmigrationでindexを削除しようと思って 最初以下のように書いたら怒られました。 remove_index :items, [:shop_id, :item_id] 出力されたエラーメッセージは以下のような感じです。 Index name 'index_items_on_shop_id_and_item_id' on table 'items…

simple_formでラベルを非表示する方法

simple_formを使っている時に、ラベルを非表にする方法です。 github.com 下記サンプルは、Titleラベルを非表示にしたい場合です。 before after 書き方 書き方はとても簡単です。 = simple_form_for [@post] do |f| = f.input :title, :input_html => {:cla…

rails4で画像をS3にアップロードする [carrierwave + imagemagick + fog + S3 + Dropzone]

carrierwave + imagemagick + fog + S3 + Dropzone の組み合わせで、画像をアップロードして、S3に保存する方法です。 作業方法を下記していきます。 imagemagickのインストール Macだったら、brewでimagemagick をインストールします。 $ brew install imag…

お名前.com + Route53で独自ドメインのメールをGmailに転送する

お名前.comにメールの転送サービスがあるのことをご存知でしょうか? こちらの、お名前.com転送Plus です。 ドメイン取るなら お名前.com:メール転送 お名前.comでドメインを購入すると、 独自ドメインのメールを転送できるサービスです。 お名前.com上でも…

レスポンシブデザインの参考に!Responsive Web Design JP がとてもいい!

新しいサイトを立ち上げようとした時に、サイトのデザインを考えるのがものすごく苦手です。 ほとんど、プログラマ寄りなので、デザインのようなカッコいいとかオシャレとかには、程遠い生活をしています。 本来のちゃんとしたサイトであれば、デザイナーさ…

Rails4のlink_toでconfirmを表示する方法

Ruby on Rails 4 で link_toで削除ボタンを作った時に、 「削除します。よろしいですか?」というような、confirmを表示させようと思って、 以下の用に書いたのですが、完全にconfirmが無視されて、削除処理が走ってしまいました。 = link_to item_path(@item…

Capistranoを使ってRailsのAssetsファイルの出力先を変更する

Ruby on RailsでAssetes ファイルをコンパイルするとデフォルトでは public/assets ディレクトリにコンパイルされたファイルが出力されます。 それを別のディレクトリに変更する場合の方法です。 そもそもなんで変更したいの? 私の遭遇したケースとしては、…

Postgresqlでdrop databaseしたら怒られた。

タイトルの通り、Postgresqlでdrop databaseしたら以下のメッセージとともに怒られました。 There are 2 other sessions using the database. 他のだれかが使っているから削除できない的なメッセージだと思います。 そんなときは、以下の用にpidをkillすれば…

Rubyで数値の下N桁を取得する方法

例えば、123456789の下 3桁を取得したい場合 以下の様にすれば良いらしい。 > 123456789 % 1000 => 789 割ってあまりを出す感じです。 割る数字の0の数が結果の桁数になります。 10 => 1桁 : 9 100 => 2桁 : 89 1000 => 3桁 : 789 10000 => 4桁 : 6789 10000…

Rails4のhas_manyのorderの書き方について

Rails4のhas_manyで 1対多 や 多対多のレコードを取得するときに、Orderをかけながら取得しようと思って 以下のように書いたら has_many :items, order: 'id' 以下の様に怒られました。 Unknown key: :order. Valid keys are: :class_name, :anonymous_class…

RailsにBootstrap Datetimepickerを設定する

Datetimepickerって結局どれ使ったらいいのかよくわからず、 jquery UIのDatePickerとか試してみましたが、 見た目のデザインと簡単に設定できる感じから Bootstrap Datetimepickerが良いんじゃないかと思っています。 今回、あまり細かな設定はしていません…

Ruby on RailsのViewとControllerで共通で使えるメソッドの設定方法

Controllerで作ったメソッドをView側でも使い時ってありあすよね? そんな時は、helper_methodです。 書き方 実装方法は以下の様になります。 helper_methodに設定したいメソッド名を渡してあげれば、コントローラーでもビューでも使うことができます。 xxxx…

Railsの複数項目でユニークチェックのバリデーションする方法

Ruby on Railsの Activerecordのバリデーションで、 複数項目でユニークチェックする方法です。 今回のサンプルでは、仮にcodeとuser_idの 2項目でユニーク制約をかけています。 書き方 書き方は以下の通りです。 validates :code, presence: true, uniquene…

モデルのバリデーションの正規表現の書き方で怒られる

モデルのバリデーションで以下の様な正規表現を使って書いたら validates :published_status, presence: true, format: { with: /^[01]$/} 以下のようなメッセージで怒られました。 The provided regular expression is using multiline anchors (^ or $), w…

簡単にhtmlやerbのソースをslimに変換(コンバート)する方法

ここ最近、erbを使うのをやめてslimに移行してきているのですが、 既存のerbに手を入れる時に、まずslimになおしてそれから、改修コードを入れるみたいな作業が発生していました。 もっと早く調べればよかったんですが、すでにhtmlやerbからslimに変更するツ…

rake db:seedでDeviceのユーザーを追加する

初期ユーザーを登録時にrake db:seedを使って登録する方法です。 実装方法 UserモデルがDeviceで管理されている状態を想定しています。 default_user = 'admin@example.com' default_user_password = '1234567890' user = User.where(email: default_user) i…

Bootstrap モダルダイアログを簡単にクローズできないようにしながら表示する

Bootstrapのモーダルダイアログを使った時に、下記のダイアログが閉じてしまアクションを防ぎます。 (ダイアログが閉じないようにします。) ダイアログの外側をクリックしてダイアログを閉じるアクション [ESC]ボタンをクリックしてダイアログを閉じるアクシ…

Railsのアプリケーション固有の環境変数を持たせる方法

Railsでアプリケーションを起動してしまったら特に変更がなく、 Rails.envの環境にもそれぞれの変数を対応できるようにするための方法です。 共通項目に関しては、1回だけ設定です。 ベストな方法かはわかりませんが、以下の様に設定しました。 設定方法 con…

日本で使うRailsアプリケーションのタイムゾーンの設定

日本で使うRailsのアプリの場合、 タイムゾーン設定は以下の様に設定しました。 表示もDBもJSTを設定しています。 application.rb config.time_zone = 'Tokyo' config.active_record.default_timezone = :local config.time_zone 表示に使われるタイムゾーン…

Slimで動的なクラス属性の書き方

slim-lang.com Slimってコード量は減るんですが、時々これどうやって書くんだっけ?ってなります。 今回は、動的なクラス属性の設定方法です。 今回はヘルパーメソッドの値をクラスに設定するパターンを想定します。 aaaa.html.slim li [class="#{is_active(…

Magic encodingが密かに便利

github.com magic encodingを一括でドカっと設定してくれるGemです。 いかを .rbの先頭に付けてくれます。 # -*- encoding : utf-8 -*- インストール Gemfileに以下を追加して、bundle installを実行します。 # https://github.com/mryan43/magic_encoding g…

psql: could not connect to serverと言われた時

起動していた開発環境が突然落ちて、postgresに接続できませんのようなメッセージが突然でるようになりました。 メッセージの内容は以下です。 psql: could not connect to server: No such file or directory Is the server running locally and accepting …

Deviseで undefined method `authenticate_user!'で怒られた時

github.com 管理画面のユーザー管理と認証に、deviseを使っていた時に、 ログイン時のみアクセスできるように、Controllerに 下記のbefore_actionを設定していたんですが、 before_action :authenticate_user! 下記の様に、そんなメソッドは無いと言って怒ら…

Nginxでベーシック認証を設定する方法

管理画面やステージングの環境など、一般公開したくない時に 一応、ベーシック認証をかけておきたいと思うことがあると思います。 そんな時のために、Nginxでベーシック認証を設定する方法です。 httpd-toolsのインストール ID/パスワードを設定するためにht…

NginxとUnicornを使っていたら自動起動設定は必須

Rails x Nginx x Unicornの組み合わせをよく見かける気がします。 私もその1人なのですが、 Nginx と Unicornを使ったらそれ ぞれに自動起動の設定を入れておくべきだと思います。 以前にNginxについては、自動起動の方法を書いているので Nginxについては…