Kaigi on Rails 2025 Day2 https://kaigionrails.org/2025/talks/naro143/#day2
アプリケーション開発をしているとアドホックに実行したいスクリプトがある時や大量のデータを処理したいときなど、バッチ処理を書きたくなる時ってありますよね。 Railsでバッチ処理を書く際によく使われている方法として有名なものが下記の3つだと思います。 rails runner スクリプトとしてバッチを書く rake task ビルドタスクとしてバッチを書く sidekiq 非同期処理としてバッチを書く アプリケーションを新規開発する際、バッチ処理のトリガーをrails runnerを使用するかrake taskを使用するかで迷ったのでまとめてみました。 sidekiq使う場合もバッチ処理内で呼ぶ想定なのでsidekiqでのバッチ処理についてはまとめていません。 先に結論言っておくと『バッチ処理を行うという観点ではrails runnerもrake taskもそこまで変わらない』です。 Rai
概要 先日公開した自分のサービスをhttps接続できるようにしたいと思いました。 SSL証明書は、どこが安くて信頼できるか社内の上司で相談したところ、近くにいたインターン生が「AWSなら無料で発行できますよ。」とナイスなアドバイスをくれました。 さっそく調べて、SSL証明書を取得したのですが、ネット上には断片的な情報しかなく思ったよりも詰まったので、これから取得する方のために、わかりやすく画像で解説します。 前提 今回は、無料でSSL証明書が利用できるAWS Certificate Manager(ACM)を使います。 アジアパシフィック (東京)は、ELB(ロードバランサー)のみにACMを使用することができます。 なので、ELBを利用していないと、無料のSSL証明書を使うことができません。 ちなみに、ELBは有料で、デフォルトで月2000円くらい掛かります。 もし使用される方は以下に設定
今回はWebpackerの導入について書いていきます。 内容的には手垢つきまくりの内容ですが、地味に体系的にまとまっているものがなかったのでまとめてみました! やりたいこと RailsでモダンなJSフレームワーク(Vue.jsやReactなど)を使いたい とはいえSPAまでは必要なくてRails内で完結したい Webpakcer導入 RailsでモダンなJSフレームワークなどを利用する際にはWebpackerを導入して行きます。 WebpakcerはRails5.1以降からrails newの段階から導入できるようになっています。 またWebpackerはyarnに依存しているためyarnをインストールしておく必要があります。 今回はrails newからではなく、途中のプロジェクトからWebpakcerを導入していきます。 yarnインストール https://yarnpkg.com/l
既存の Rails アプリに Webpacker を導入したいと思います。 Webpacker は JavaScript だけを管理して css や画像は従来通り Sprockets 等にまかせる、といった使い方をすることもできます。 しかし今回は JavaScript/Css/Image すべてを Webpacker で管理することを目標にやっていきます。 Webpacker をインストール Gemfile に webpacker を追加してインストールします。 gem 'webpacker' bundle bin/rails webpacker:install ディレクトリ構成 ディレクトリ構成は以下のようにしてみました。 app/javascript: ├── packs: │ └── application.js └── javascripts: │ └── application
こんにちは、GMO ペパボの人間です。これは pepabo Advent Calendar 2016 の 9 日目の記事です。 昨日は我らが CTL けんちゃんくんさんの 「gemビルドしようとして The validation error was 'yourgem-x.y.z contains itself (yourgem-x.y.z.gem), check your files list と出たとき」 でした。 今日は Ruby, とくに Rails で使える enumeration 実装 Enumerize ActiveRecord::Enum の機能を比較してみました。 動機 私事ながら、仕事で Rails アプリケーションの開発をするようになって 1 か月経ちました。 コードを読んでいるといろいろと勉強になることが多いのですが、Enumerize という enumeration
おそらく多くのソーシャル系アプリにあてはまるRailsのプチ・デザインパターン的な話。 ぼくが今やっているEast Meet Eastには、ユーザごとに数多くのプロフィール属性があります。名前、性別、生年月日、郵便番号、職業などなど、カラム数にしてざっと25個。これを、全部ひとつのusersテーブルに詰め込むのは、コードの見通しという観点からも性能の観点からも、あまりよろしくありません。 なぜならば、ユーザ関連の情報を扱う局面としては主に メールアドレスとパスワードなどを使ってログインする(アカウント情報) プロフィール情報で条件を指定してユーザを検索・推薦する(プロフィール情報) という2つの独立性の高いユースケースにわかれるため、ログイン処理をやってるときにはプロフィール情報はいらないし、プロフィールを検索してるときにはメールアドレスやパスワードをロードするのは無駄です。また、開発やデ
2018.10.16 Rails5.1/5.2: `rails new`した「後に」yarn/webpackerでjQueryとBootstrap 4を追加する Rails 5.1や5.2でrails newした後でwebpackerでjQueryやBootstrap 4を足したくなったときの手順をメモします。Bootstrap 4のインストールは、できるだけTwitterリポジトリの公式情報に沿うようにしました。 1. jQueryをWebpackerで後から追加する yarnがインストールされていない場合はbrew install yarnでyarnをインストールする(Macの場合) yarnがインストールされているかどうかはyarn -vで確認できます。 Gemfileにgem 'webpacker', github: 'rails/webpacker'を追加し、bundle ins
世間では GW ですが、皆さんいかがお過ごしでしょうか。こちらは仕事も落ち着いてきたため、直近のプロジェクトでそこそこ時間を使う羽目になった Webpacker についてのブログ記事を書くことにしました。 はじめに Ruby on Rails では Sprockets というモジュール(?)によって、JavaScript, CSS, 画像などのアセットを管理する事が出来ます。これは Rails 独自の仕組みであり、それによる問題点なども目立つようになったため、フロントエンド界隈で広く使われている Webpack を使いたいという要望は以前からあったようです。(その辺りの経緯などは、検索すれば色々出てくるので、ここでは記載しません。) そうした要望に応えるものが Webpacker で、簡単に言うと Webpack の機能を Rails に組み込んだもので、使う側からすると主に以下の2つの機
2018.10.01 週刊Railsウォッチ(20181001)Railsアップグレード記事と各種支援ツール、CLI向けRubyワンライナー集、Rubyアプリをワンバイナリ化ほか こんにちは、hachi8833です。ついにGobyのREPLを修正できました。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを社内有志でつっついたときの会話です👄 今回のつっつきは軽めでお送りします🙇。 ⚓【お知らせ】週刊Railsウォッチ「公開つっつき会」#3開催 エントリ: 週刊Railsウォッチ 公開つっつき会 第3回|IT勉強会ならTECH PLAY[テックプレイ] いよいよ今週となりました「週刊Railsウォッチ 公開つっつき会 第3回」(10月4日(木)19:30〜)引き続き応募中です(つっつき・懇
身長体重が変わっていないにも関わらず、5年前より体脂肪率が4.5%増加したエンジニアの村上(@pipopotamasu)です。 本日は9/12(水)に開催したMedBeerというイベントを報告したいと思います。 medpeer.connpass.com @GINZA SIX 12F 株式会社リンクアンドモチベーション内 イベントスペース MedBeerとは? MedBeerとは、年1回くらいのペースでメドピアが主体となって行なっている技術イベントになります。 基本的にRailsに関することをテーマに発表を行い、今回で4回目の開催となりました。 第1回から着々と規模が大きくなっており、前回は約60名、今回は約120名程が参加されました。 また「Beer」という名をつけているので、10種類ほどのビールとそれにおつまみ(今回はからあげエンジニアが参加するということでしたので、日本で初めて外食メニ
次記事: Railsは2018年も現役か?: 中編(翻訳) 概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Is Rails still relevant in 2018 ? 原文公開日: 2018/08/16 著者: equivalent 記事は3分割しました。画像は元記事からの引用です。 Railsは2018年も現役か?(翻訳) Rubyから別の何かに乗り換えることを検討中のWeb開発者から、数日前にこんなメールを受け取りました。 まったく新規から始めるとしたら、バックエンドにRubyかElixirかJSのどれを選ぶ? このメールで他に重要と思われる部分は、現在の彼はもっぱら自分のサイドプロジェクトに関心を寄せていることと、主な懸念点は開発速度と開発のしやすさであるということです。 メールに返信を書き始めたのですが随分と長くなってしまったので、この際記事にすることにしました
はじめまして、2018年7月入社の sue445です。自称「フルスタックキュアエンジニア」です。最近はpixiv PAYのチームでRailsを書いたり社内gemを作ったりしています。 好きなプリキュアはキュアピースです。 前置き 先日Rails 5.2.1がリリースされました https://weblog.rubyonrails.org/2018/8/7/Rails-5-2-1-has-been-released/ pixiv PAYでもその対応を行っていて、先日本番環境にRails 5.2.1を投入しました 💪 ググると特定のバージョンでのアップデート方法はいろいろ見つかるのですが、どのバージョンでも使える汎用的な方法が意外になかったので紹介しようと思います。 Rails 4.1系以降はだいたいこの方法でアップデートしてきたのでそれなりに実績のある手法だと思います。 筆者スペック 初め
ちょっと煽り気味のタイトルにしてみましたが、Railsで開発する時は意識的にOOPに寄せないとオブジェクトの力が活かせなくなるよってことと、Railsが提供しているクラスの責務を分割することを支援してくれる機能について話をします。 ActiveRecordの性質 Rails開発においては、モデル層にロジックを書いてコントローラーは薄くしろ、というのはしつこく言われているので、概ね浸透してきていると思います。 それに加えて、最近私が結構しつこく主張しておきたいのが、モデル = ActiveRecordでは無いよ、ということです。 ActiveRecordは成り立ちから言うと、ロジックとDBへの永続化をまとめてカプセル化するアーキテクチャパターンから来ています。(詳しくはエンタープライズアプリケーションアーキテクチャパターンという書籍を読むと良いです) この方法はロジックが複雑でない場合、つま
アプリケーションはなるべく単純な方が良い。modelの中にある複雑さを新しいどこか、例えばmoduleとかクラスとかに移動することによって単純にしていくというアプローチを考えてみよう。 以下のようなオンラインショッピングアプリケーションのためのモデルを考えてみる。クラスメソッドとして、状態によってorderを検索するメソッド、手段をしてして全検索するメソッド、結果をxml,json,pdfなどのフォーマットにexportするメソッドを持っている。 # app/models/order.rb class Order < ActiveRecord::Base def self.find_purchased # ... end def self.find_waiting_for_review # ... end def self.find_waiting_for_sign_off # ... e
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Adding GDPR Compliance to My Rails App and Technical Blog 原文公開日: 2018/05/14 著者: Paweł Urbanek 画像は元記事の引用です。 参考: EU一般データ保護規則 - Wikipedia EU一般データ保護規則(GDPR EU)が後2週間もしないうちに施行されます。本記事では、私が自分のRails SaaSアプリに加えたGDPRコンプライアンス対応とこのブログ自身について解説します。 アプリは、たとえEU圏内に配置されていないとしてもこの新しい規則に準拠しなければなりません。アプリにヨーロッパのユーザーがいれば該当します。 免責事項: 私は法律の専門家ではありません。また本記事は法的な助言に基づいたものではありません。 GDPRコンプライアンスが必要
Railsのログ問題 便利なことにRailsは特に設定しなくてもproduction.logにログを吐いてくれる。エラーメッセージやSQL文も出力してくれるので助かる反面、以下のような問題点がある。 1リクエストで複数行流れるので、エラー調査や緊急対応時にgrepできない デフォルトだと若干冗長すぎる Fluentd等のログの活用を考えた際にパースが非常に面倒 Rails.loggerをオレオレカスタマイズするのも無くはないが、メンテナンスのことも考えて、ログ出力用ライブラリLogrageを使ってJSON形式のログをスマートに出力するようにした。 Logrageとは Railsのログのいい感じに出力してくれるライブラリ https://github.com/roidrage/lograge ちなみにLogrageの説明ではRailsのデフォルトログを「noisy and unusable,
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Say no to chained scopes! 原文公開日: 2015/06/24 著者: Jeroen Weeink サイト: Crafting Ruby 日本語タイトルは内容に即したものにしました。 2018/04/18: 初版公開 2023/02/14: 更新 Railsアプリで、次のようにモデルのデータベーススキーマの内部にまで立ち入っている(コントローラ)コードをよく見かけます。 class Person < ActiveRecord::Base enum gender: { male: 1, female: 2 } end class PeopleController < ApplicationController def index @people = Person.where(gender: Person.ge
また以下のような、根ノード(親を持たないノード)や葉ノード(子を持たないノード)や世代をキーとしたmapを取得するクラスメソッドが使えるようになります。 Comment.roots # => [[隣接リスト最高!],[こんにちは]] Comment.root # Comment.roots.first と同じ # => [隣接リスト最高!] Comment.leaves # => [[シンプルでいいですよね],[入れ子集合モデルの方が良いですよ], [こんにちは。]] Comment.generations # => {0=>[[隣接リスト最高!],[こんにちは]], # 1=>[[シンプルでいいですよね],[アンチパターンですよ、経路列挙モデル使いましょう]], # 2=>[[入れ子集合モデルの方が良いですよ]]} またインスタンスメソッドでいえば、#parentで親ノード、#ances
新しいRailsフロントエンド開発(1)Asset PipelineからWebpackへ(翻訳) 新しいRailsフロントエンド開発(2)コンポーネントベースでアプリを書く(翻訳) 新しいRailsフロントエンド開発(3)Webpackの詳細、ActionCableの実装とHerokuへのデプロイ(翻訳) 概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Evil Front Part 1: Modern Front-end in Rails 原文公開日: 2017/12/05 著者: Andy Barnov、Alexey Plutalov サイト: Evil Martians 前書き 本記事は、フロントエンドのフレームワークに依存しないRailsプレゼンテーションロジックを現代的かつモジュール単位かつコンポーネントベースで扱う方法を独断に基いて解説するガイドです。3部構成のチュ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く