Rails
ざっくりまとめ Rails7は、StimulusとTurboのHotwireを標準のjsとしているが、jsまわりのトレンドとは方向が異なる Railsでリッチなフロントエンドをバリバリやるのは難しく、そのあたりの不満がフロントエンド側から表出している Railsは(最初から)、小さい…
elasticbeanstalkのプラットフォーム(ruby puma)のバージョンを上げると、こんなエラーが出るようになる /opt/rubies/ruby-2.7.3/lib/ruby/site_ruby/2.7.0/bundler/runtime.rb:302:in `check_for_activated_spec!': You have already activated nio4r 2.5.7…
2021/01/12 現在 基本的にはここ見ればOKです guides.rubyonrails.org ポイント Railsはセマンティックバージョニング バグ修正は最新バージョンのみ (2021/01/12 現在、 6.1.Z ) セキュリティFIXは、メジャーシリーズ全てと、1つ前のメジャーの一番最後のマ…
UNIXドメインソケット 単一マシン上の高効率なプロセス間通信に用いられる機能・インターフェースの一種である UNIXドメインソケット - Wikipedia ファイルシステムを介してプロセス同士の通信を行う仕組み 普通にリバースプロキシするより高速だが、ファイ…
自己学習のためにざっくり作ってみた 個人的には、本番はUnicornでも開発環境ではPumaでいいんじゃないかな...って思っている SQLは合わせたほうが良いと思うけど 前準備 experimentalな機能を使うので環境変数を予め設定しておく .envrc export DOCKER_BUIL…
現象 docker-compose を使って、run bin/rake を実行した時に、Could not find rake が発生 (ローカル環境では正しく動作する) $ docker-compose exec web bundle exec bin/rake --version Could not find rake-12.3.0 in any of the sources Run `bundle in…
DBはPostgreSQLで、他に余分なgemを入れなければこんな感じ FROM ruby:2.5.0-alpine COPY Gemfile* /myapp/ WORKDIR /myapp RUN apk upgrade --no-cache && \ apk add --update --no-cache \ postgresql-client \ nodejs \ tzdata && \ apk add --update --n…
条件式付きのscpoeをクラスメソッドに移行する際に、問題になる 例: scopeの場合 class Item < ApplicationRecord scope :by_name, -> name { where('name like ?', "%#{name}%") if name.present? } end 引数の値が nil でも、 ActiveRecord::Relation がキ…
と思って調べたら、Rails ガイドに、 スコープでのメソッドの設定は、クラスメソッドの定義と完全に同じ (というよりクラスメソッドの定義そのもの) です。どちらの形式を使用するかは好みの問題です。 と、言われたので、 特に必然性は無いらしい ちなみに…
これまでのあらすじ 概要を理解して、Imageを作ってコンテナをうごかしてみました kasei-san.hatenablog.com kasei-san.hatenablog.com 今日やること 公式のクイックスタートガイドを元に、ローカルのDockerでRailsを動かしてみる docs.docker.com ワーキン…
先に結論 pumaは worker * スレッド の数だけコネクションを使う しかし、ActiveRecordのコネクションプールの数はデフォルトで 5 なので大抵不足する コネクションが不足すると、DBへの接続リクエストは待ち状態に 待ち状態のまま一定時間が経過すると、Act…
経緯 Railsを動かしているElasticBeanstalkでメモリの消費量が増大している 定期的/一定量のメモリを消費したらアプリをリスタートしたい 注意事項 まずはRailsやpumaなどを最新にして、自アプリ以外が原因のメモリリークをなくしましょう っていうか自アプ…
database.yml をgitにcommitしたくないよね... そんな時に 先に方法 files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_symlink_database_yml.sh": mode: "000777" content: | #!/bin/bash cd /var/app/ondeck/config ln -sf database.example.yml dat…
いつもはkey-valueストアでやっているので、cookie sessionを使うとなった時に心配になったのでメモ 先に結論 sessionは保持される 理由 cookie sessionは、ブラウザ側でsessionの情報を保持して、サーバ側に情報を持たないから cookieおさらい cookie : web…
先に結論 もう少し良いインスタンスを使う 原因 bundle install 時に メモリが不足が原因で native extension のビルドに失敗している エラーメッセージ An error occurred while installing nokogiri (1.6.8.1), and Bundler cannot continue. Make sure th…
これは何? Herokuで運用しているアプリを、ふとAmazon Elastic Beanstalkに移行したくなった けれど、軽く試すためだけのために、DBを移行するの大変 そんな時にお手軽に試す為の方法の記録 Heroku から DB の情報を取得する heroku では、database.yml に接…
こんな場合 class Item < ActiveRecord::Base has_one :item_detail, dependent: :destroy end class ItemDetail < ActiveRecord::Base belongs_to :item end ItemDetail を参照するとき、記述が冗長になってしまう # item って単語が重複するのがキモい ite…
やりたいこと paperclip の写真の格納先をS3にしたい 方法 Paperclip に S3 用のオプションがあるので、それを使う aws-sdk のインストール Gemfile gem 'aws-sdk' paperclip のデフォルトの設定を追加 config/application.rb class Application < Rails::Ap…
やりたいこと Rails アプリに画像アップロード機能を追加したい 方法 thoughtbot/paperclip を使う paperclip のインストール Gemfile # 次のイテレーションで aws-sdk を使うが、その時に ver2 を使いたいので、Paperclipを最新のものにした gem 'paperclip…
やりたいこと Railsで1対多のmodelがあるときに、 親modelのformで子modelを動的に追加したり削除したりしたい 方法 nathanvda/cocoon を使う つくりかた Gemfile gem 'cocoon' Item の scaffold を generate rails g scaffold item name:string price:integ…
これは何? レスポンスタイムが遅くて辛いけど原因が特定できないときに役立つツールをまとめてみました Rails以外でも使えるものも一緒くたに書いているけど、気にしない! やらないこと それぞれのツール詳細な説明 気が向いたら個別記事を書く 環境 Rails 4…
環境の作成 dev-env は環境名 eb create dev-env 環境変数 設定 eb setenv SECRET_KEY_BASE=****** -e dev-env 確認 eb printenv dev-env Environment Variables: RACK_ENV = production SECRET_KEY_BASE = ****** RAILS_SKIP_MIGRATIONS = false RAILS_SKIP…
ruby読んだついでにこっちも読んどく 原文: bbatsov/rails-style-guide 日本語訳: moneyforward/rails-style-guide Routing RESTfulなresourceにアクションを追加する場合、member と collection を利用する #config/routes.rb resources :subscriptions do …
Rubocopって何? bbatsov/rubocop Rubyの静的コード解析器 ruby-style-guideを遵守させる 問題点について自動的に修正してくれる Rubocop入れると何が良いの? ruby-style-guideという標準的なコーディングスタイルガイドにコードが準拠する 可読性up 不穏なコ…
CircleCIってなに? SaaSのCIツール SasS Software as a Service 必要な機能だけサービスとして切り出したソフトウェア インターネット経由でサービスを提供するのが一般的 CI Continuous Integration 継続的インテグレーション ビルドやテストを継続的に実行…
先にまとめ RailsのMVCと原義のMVCは異なる ビジネスロジックはModelに実装する Skinny Controller, Fat Model RailsにはFat Modelをリファクタリングする仕組みが色々あるよ MVCの目的 コードの再利用性と関心事の分離 コードの再利用性 : ビジネスロジック…
ざっくりとした覚え書き ログ関係 rails-flog ログのParametersやSQLを整形してくれる quiet_assets 動的なアセットパイプラインの生成時に出力されるログを消してくれる pry関係 こっちでも解説してる → pryとそのプラグイン色々メモ - kasei_sanのブログ p…
先にまとめ TurbolinksWay(後述)にそって作ればすごい機能 独自実装でリッチなサイトを既に作っている場合、競合地獄がまってるよ!! よくこんなの標準機能にのっけたな Turbolinksって何? Rails4.0から採用された、レンダリング高速化のためのgem ActionPack…
Aseets Pipeline ってなに? Rails3.1から実装 Rails4から別gemに sprockets-rails sprockets(および、sprockets-rails)を使って、以下の処理を行う CoffeeScriptや、SCSS等の高級言語を変換 マニフェスト(後述)に従って、js, css を1ファイルにまとめる ファ…
概要 rails c 等を叩く時に、毎回Railsの初期化を行わなくなるので、開発速度が向上するよ!! Springサーバが起動して、変更を監視して必要に応じて再ロードする Rails4.1以降は標準で入っていて、勝手に起動したり終了したりしてる http://railsguides.jp/4_…