Skip to content

Instantly share code, notes, and snippets.

View nagait84's full-sized avatar
🚀
加速中

nagait84 nagait84

🚀
加速中
View GitHub Profile
@nagait84
nagait84 / varying_array_parsable.rb
Created October 12, 2021 02:07
rails4.2 Postgresqlの配列リテラルを配列に変換
# app/models/concerns/varying_array_parsable.rb
module VaryingArrayParsable
extend ActiveSupport::Concern
class VaryingArrayParser
# @see {https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb}
# Loads pg_array_parser if available. String parsing can be
# performed quicker by a native extension, which will not create
# a large amount of Ruby objects that will need to be garbage
# collected. pg_array_parser has a C and Java extension
@nagait84
nagait84 / 000_memo.md
Last active December 17, 2020 03:15
レガシーPRJ蘇生時の自分用メモ【CakePHP2.3系】

現状調査

  • CentOS release 6.9
  • MySQL 5.1.62-log
  • CkePHP 2.3.10
  • PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09)
  • Apache
  • vhosts
  • そのほか
  • jQuery mobile使われてた
@nagait84
nagait84 / hash_with_destructive_methods.rb
Created December 11, 2020 01:59
【Rails】ハッシュに破壊的メソッドを追加したクラスを定義
# ハッシュを拡張して破壊的メソッドを追加したクラスを定義
class HashWithDestructiveMethods < Hash
class << self
def [](*args)
new.merge!(Hash[*args])
end
end
alias_method :regular_writer, :[]= unless method_defined?(:regular_writer)
def initialize(constructor = {})
@nagait84
nagait84 / Dockerfile
Created December 7, 2020 13:35
【メモ】マルチステージビルドを用いたRails用イメージ(開発・本番)
FROM ruby:2.6.3-alpine as base
LABEL maintainer="nagait84 <[email protected]>"
# ビルド時の作業ディレクトリ
WORKDIR /app
# bundler インストールパスの指定
ENV BUNDLE_APP_CONFIG /app/.bundle
# Railsのログは標準出力に流す
@nagait84
nagait84 / dml_sanitizable.rb
Last active February 19, 2021 10:33
【Rails】PostgreSQLでORDER BY FIELD句を実現したい
# @note Concern扱いではなく、#extendingとして使用
module DmlSanitizable
# PostgreSQL使用時に、MySQLの `ORDER BY FIELD()` 関数と同じ挙動をさせる
# @example
# models = Model.all.extending(DmlSanitizable)
# models.order_by_field(:color, ['緑', '紫', '赤', '青', '黄'], :desc)
# # => [#<Model color: '黄'>, #<Model color: '青'>, #<Model color: '赤'>, ...]
# @param column [Symbol]
# @param custom_list [Array] 並び替えたい値の順序
# @param sort_order [Symbol(:asc), Symbol(:desc)] (:asc) 昇順or降順
@nagait84
nagait84 / examples_controller.rb
Created December 1, 2020 12:27
Railsのparamsの特定のkeyの値に対して変換処理をする再帰関数なメソッドのサンプル
class ExamplesController < ApplicationController
# 例えばこんな感じに使用する
# ユーザーによる全角での金額入力やカンマ区切りの金額入力、前後の無駄なスペースなどをよしなに置き換える
before_action(
lambda {
hankaku_and_strip_params(food: [:price, :price_down], drink: [:price, :price_down])
},
only: [:create, :update]
)