前置き 本記事の内容はタイトルのまんま。rails serverコマンドを叩いた際に一体何が実行されているのかを調べてみた。内容的に、対象者は初心者以上中級者未満。多分。なお、調べながら記事を書いていたので、説明の流れが下手くそな部分があるがそこは許してンゴンゴ。 ※Rackについて詳しい人は得るものないかもしれませんがご了承ください。 バージョン ruby 2.6.3 Rails 6.0.1 準備 多分そんなに必要ないけどRails newしてアプリを作成。
Deploying a Rails application to Kubernetes © 2019-2023 Marco Colli, Founder @ Pushpad, Cuber There are many ways to deploy a Ruby on Rails application: one of them is using Docker containers and Kubernetes for orchestration. This guide shows some of the advantages of Kubernetes compared to other solutions and explains how to deploy a Rails application in production using Kubernetes. We focus on t
こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。 Ruby化のプロジェクトが始まって1年が過ぎました。新しいメンバーも入り、Railsのコード量は日に日に多くなっています。可読性を保ちつつアプリケーションを大きくしていくために、使える知見をチームメンバーに効率よく伝えていくのが大事だと感じる今日このごろです。 普段メドピア内ではコードレビューや社内勉強会などで知識のシェアを行っています。そんなとき、ブログ記事や書籍などのまとまった文章があると「これ読んでおいて」と言うだけで良くなるので楽です。先日form objectを使ったほうがいいですよーという内容でレビューコメントをつけようとしたところ、日本語で詳しくまとまった文章が見当たりませんでした><なければ自分で書くしかありません。そこで今回はRailsにおいて可読性を保つための知見である、form o
はじめに 最近読んだ @yuba さんの 論理削除と一意性制約を両立させる方法・DB製品別 という記事で、部分インデックス というインデックスについて知ることができました。そこで今回、Rails + PostgreSQL の環境でこの部分インデックスを活用するには具体的にどうすればいいかをまとめました。 TL;DR add_index の where オプションを使う。 問題 論理削除の機能を使った User モデルがあるとします。deleted_at 列に (削除された際の) 日付が設定された場合に論理削除されていると見なします。ここでは paranoia という Gem を使用していることを想定します。ただし、この記事では Gem を使用するかどうかやその種類は重要ではありません。 次のマイグレーションでは users テーブルの email 列に対して UNIQUE インデックスを作
Railsではdb:migrateすると、デフォルトでdb/schema.rbを生成しますが、SQLでスキーマ情報を管理することも可能です。下記のようにconfig/application.rb内でactive_record.schema_formatを:sqlと設定することで可能になります(デフォルト値は:ruby)。 # config/application.rb module RailsApp class Application < Rails::Application config.active_record.schema_format = :sql end end これでdb/migrateするとデフォルトのschema.rbではなく、db/structure.sqlというSQLファイルを吐きます。 structure.sqlをロードする生成されたstructure.sqlファイ
I was looking through the Devise code and noticed that most of the controllers yield the resource being created. class Devise::RegistrationsController < DeviseController # ... def create build_resource(sign_up_params) resource.save yield resource if block_given? # ... This must be some sort of extendability feature but I don't really get how you would pass a block to to the controller action? Note
require 'bootsnap' env = ENV['RAILS_ENV'] || "development" Bootsnap.setup( cache_dir: 'tmp/cache', # キャッシュファイルを保存する path development_mode: env == 'development', # 現在の作業環境、例えば RACK_ENV, RAILS_ENV など。 load_path_cache: true, # キャッシュで LOAD_PATH を最適化する。 autoload_paths_cache: true, # キャッシュで ActiveSupport による autoload を行う。 disable_trace: true, #
食べログ Advent Calendar 2019 24日目の記事です。 はじめまして。 好きな筋トレはバーベルシュラッグ。 好きな小説家は宮内悠介。 食べログのフロントエンドチームに所属している@sn_____です。 クリスマスイヴなのでWebpackerの話をします。 皆さんWebpacker使ってます? 個人的にはWebpackerは好みではありません。 Webpackerは面倒なwebpack回りの設定をやってくれるので、Railsアプリケーション開発では重宝されるケースも多いと思います。 しかし、提供されるコマンドの内部処理はブラックボックス化されており、詳細を把握していない人も多いのではないでしょうか。 フロントエンドエンジニア的にはそこらへんも抑えておきたいので、Webpackerが提供しているコマンドの内部処理を調査してみました。 調査対象 webpacker@4.2.2(
言いたいこと webpackをあまり知らない人がwebpackerを用いることで簡単に導入できるけど以下のことはちゃんと知っておいてほしかったり、考えてほしい。(切実) ビルドはRubyからコマンド実行してるけど、実際に発行しているnpm scriptはwebpack(-dev-sever) --config config/webpack/(development|test|production).jsなんで覚えておけ。 デフォルトでmultiple entryになっているのでSplitChunksPluginかCommonsChunkPluginの設定はとりあえず入れておけ。 本当にwebpackerは必要ですか?時期が来たら捨てろ。 webpackerの落とし穴 昨今では当たり前となっているwebpackの導入を**webpackをあまり理解していない人が簡単に入れれるという特徴がある
Docker Compose + Railsでイメージ内でbundle installしているはずなのにgemが無いとエラーがでる。RailsDockerdocker-compose 背景 docker-composeでrails環境を構築したが起動せず。 gemが無いと言われているのでdocker-compose run 'コンテナ' bundle installの実行で解決。 けどなんでDockerfile内でbundle installしているのに再度bundle installしないといけないんだろうと疑問に思ったので調査してみました。 先に結論 volumeに古い情報が保存されており、最新の情報がvolumeに上書きされてしまう。 エラー再現例 構築時のファイル例 FROM ruby:2.6.3 RUN apt-get update -qq && \ apt-get instal
bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみようRubyRailsBundler TL; DR(最初に結論) bundle installをする場合は--path vendor/bundleを付けてプロジェクトごとにgemを管理しろ、という意見をよく見かける。 しかし、pathを指定しないと問題が起きる可能性があるのは、かなり特殊な条件下に限られる(100人いたら100人全員が遭遇するような問題ではない)。 よって、--path vendor/bundleのオプションは、付けたい人が付ければよいだけで、開発者全員に強制するようなルールではない、と筆者は考える。 はじめに bundle installコマンドを実行するとき、Ruby界に大きく分けて2つの流派があります。それは「--path vendor/bund
ローカルにgemをインストールするため --pathオプションでvendor/bundleを指定 bundle execを打ちたくないので --binstubsオプションでvendor/binを指定 いつものように上記のコマンドを打つと、以前は出なかった以下のメッセージが出るようになりました。 [DEPRECATED] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'vendor/bundle'`, and stop using this flag [DE
はじめに Dockerの勉強も兼ねてrailsのアプリをコンテナに作ろうとしたが環境構築にアホみたいに時間がかかった。 Dockerもrailsも(もはや初歩的なコマンドすら)不慣れなプログラマを救いたいので、手順を書きます。 あとDockerはこれからrailsエンジニアになる人が合わせて使えるようになっておけばスキルとして加点になるので(新しめの技術なので供給量的にも)、勉強のきっかけになればと。 この手順すらめんどくさいと思った方へ(2019-02-04追記) 何もない状態からrailsサーバーとMySQLのコンテナを立ててくれるシェル ※真面目に作りを意識しながらやった方が今後応用が効くようになるのでできるだけ読んで欲しいです... 環境(!!Rails5系で作成してます!!) Mac OS Ruby2.5.3 Rails5.2.2 MySQL5.7 -> Rails6系では、we
自分がRailsチュートリアルなどを一通りこなし、実務でRailsを書き始めてようやく学べたRails上でのコーディングのパターンをまとめてみたいと思います。 RailsTutorialを何周かやってみた、これから自分のアプリケーションを書くぞ、という方を想定読者においています。 MVCの責任分割について RailsはMVCにしたがってコーディングをしていく必要があるのですが、何がモデルで、何がコントローラーなのかというのは結構あいまいだったりします。 たとえば以下のような場合は、MVCがきちんと守れていない可能性があります。 コントローラー actionにトランザクションが書かれている ifが3回以上ネストされて書かれている ViewHelperがincludeされている モデル 表示のためにしか使わないようなメソッド(page_title等)がモデルに定義されてしまっている また、MV
Gemを作る時知っておくと役に立つかもしれない、lazy_load_hooksと主要なスコープについてRubyRailsGem ActiveSupportはrailsの開発に役立つAPIを提供しているモジュールですが、その中にあるlazy_load_hooksという遅延処理に関連するモジュールについての記事です。 はじめに ちまたに公開されてるgemを読んでいると、ActiveSupport.on_load :scope という記述をよく見かけます。対象スコープとなるモジュールが読み込まれた後でblockに渡した処理を遅延実行できる便利なものという認識です。 ですがいざ自分でgemを作ろうと思ったときに、on_loadで使えるスコープってどうなってるのかわからなかったので調べました、railsについてもう少し詳しく知りたい人や自分でgemを公開したい人向けかもしれません。 active_s
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Limit Rails memory usage, fix R14 and save money on Heroku 原文公開日: 2018/01/15 著者: Paweł Urbanek 理論的には、Herokuの512MB dynoが1つあればRails webサーバーとSidekiqプロセスを両方とも動かせます。トラフィックの少ないサイドプロジェクトで月7ドルを節約できればとても助かります。残念なことに、1つのdynoでRubyプロセスを2つ動かすとメモリの問題が生じることがあります。本記事では、Railsアプリのメモリ使用量を制限する方法について説明します。 最近読んだBilal Budhaniの良記事では、1つのHeroku dynoでSidekiqプロセスとPumaを同時に実行する方法について説明していました。私のサブ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く