Rails Developers Meetup 2017での発表内容です。 大きいRailsアプリケーションの可読性を保つためのコツについてまとめました。
![レールの伸ばし方](https://cdn-ak-scissors.b.st-hatena.com/image/square/d7a7a52fd0b5b65ad4f88c36eae654cf929f2ad7/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fea38458ac52240b5a94cf0b03411226b%2Fslide_0.jpg%3F9133594)
Kibelaのマルチテンシーを解説します。 #railsdm 2017 の資料です。
Rails 5.2.0 beta: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials It’s been too hard to deal with file uploads in Rails for too long. Sure, there’s been a lot of fine plugins available, but it was overdue that we incorporated something right into the framework. So now we have! With the new Active Storage framework in Rails 5.2, we’ve solved for the modern approach of upload
こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。最近はよくリファクタリングをしています。 今回は、最近僕がリファクタリングしている内容についてまとめようと思います。 メドピアではFat Model/Controllerを避けるために、rubocopの設定を利用しクラスの行数が300行以下になるよう制限しています*1。最近300行を超えるモデルが出てきたので、一部の処理を別のクラスに切り出し始めました。 このとき、Railsが提供している機能であるconcernsを利用すると楽に行数を減らすことができますが、それだとrubocopの指摘を回避できるという意味しかないので、なるべく委譲(composition)を利用して処理を別クラスに移していっています*2。 複数モデルにまたがる処理を切り出す Railsアプリケーションを書いていると、複数のモデルを一度
前提知識 Rails アプリにおいて、テーブルの追加やカラムの追加は簡単なものの、カラムの削除やリネームは慎重に行う必要がある。たとえアプリからそのカラムを参照してないとしても、いきなりカラムを削除するとエラーになる可能性が大いにある。 というのも Rails にはスキーマキャッシュというものがあり、テーブルのカラム情報をモデルがキャッシュしているからだ。このキャッシュはたとえばいわゆる N+1 クエリ問題を避けるために includes (eager_load) するときに参照される。 SELECT 句で t0_r0 のような機械的に別名が振られるようなクエリを見たことがある Rails エンジニアは多いと思う。 機械的に全カラムを取得するためにスキーマキャッシュを利用しているため、このようなクエリが実行されてる中でカラムを削除したりリネームしたりすると、スキーマキャッシュをもとに並べら
Vue.js は普通の Web ページにもゆるふわに導入しやすい点がメリットの一つですが、(SPA ではない) Rails アプリで使う時は少し考えて書かないとつらくなってくると思います。 例えば、ある <select> 要素の値に応じて別の <select> 要素で選択可能な値をフィルタリングするという機能を実装したい場合を考えます。フィルタリングの機能を持たない、ただのフォームであれば Rails のフォームヘルパーで簡潔に書くことができます。 <% # コントローラーから渡す %> <% @categories = [['Category 1', 1], ['Category 2', 2], ['Category 3', 3]] %> <% @items = [['Item 1', 1], ['Item 2', 2], ['Item 3', 3]] %> <%= form_with(
先日行われたRejectKaigi 2017でファイルアップロードについて発表しました。資料はこちら。 内容的には、WEB+DB PRESS Vol.95で書いたファイルアップロード話を最新にしたものになります。Rails5.2で新しく追加されるActive Storageというファイルアップロード機能を紹介しつつ、ファイルアップロード全般の話題について触れています。 ファイルアップロードをただしく実装するにはそれにまつわる様々な要素についての知見が必要で、webエンジニア的には腕の見せ所ではないかと思います。Active Storageの登場でファイルアップロードについての知見が広まって、ただしく実装できる人が増えるといいなと思います(( ⁰⊖⁰)/) あわせて読みたい WEB+DB PRESS Vol.95posted with amazlet at 17.08.20小出 淳子 黒澤
We’re happy to announce three new members of the Rails committers team: George, Javan, and Ryuta 🎉! George Claghorn: George has been an integral part in creating our new Active Storage framework. He wrote a substantial part of the framework itself by extracting hard-won lessons from his work at Basecamp on moving our storage to the cloud. George also managed the stand-alone rails/activestorage re
モバイルアプリサービス部の五十嵐です。 先日、あるRailsアプリケーションの開発環境を同僚のマシンに作成しようとしたところ、gemのインストールに1日かかってしまいました。環境構築は手順化されていたのですが、トラブったのは主にNative Moduleを利用する libv8 、 therubyracer 、 rmagick などのおなじみの面々です。手順を作った時は、これらのgemのインストールに必要なライブラリを brew install で最新バージョンをインストールするだけでよかったのですが、時が経ちライブラリの最新バージョンが更新されていたことが主な原因でした。この状況はいかんな〜と思い、Railsアプリケーションの開発環境もDockerにすることにしました。 本記事では、Railsアプリケーションの開発環境をDockerにするときに検討したことや問題点などを書いています。なお、
昨日のRails Developers Meetupで綺麗なテストコードの書き方について発表してきました。 Rails Developers Meetup #1(東京会場) - connpass 資料はこちら 余談 もともと数年前くらいから、テストコードの書き方についてまとめたいなーと思っていたのですがなかなかキッカケがなくて手を付けられていませんでした。今回のミートアップ駆動で一通り形にするところまでいけて今とてもスッキリした気持ちです 😇 もっと多くの人にテストコードの書き方を意識してもらいたいので、また機会があればどこかで喋りたいですね。 昨日発表した内容はGitHubリポジトリにまとめたものの一部です。綺麗なテストコードの書き方について詳しく知りたい方は下記のリンクからどうぞ。 willnet/rspec-style-guide お願い 今回まとめた内容はあくまで僕が考えるテスト
Rails 5.1: Loving JavaScript, System Tests, Encrypted Secrets, and more In celebration of the 12th RailsConf in Phoenix, Arizona this week, we’re proud to announce that Rails 5.1 is ready in its final form! We’ve spent over 4,100 commits since Rails 5.0 making everything EASIER, SIMPLER, and, uhhh, FUNNER? (That’s a RailsConf joke). The highlight reel hasn’t really changed since the first beta, bu
フィーチャー開発から ホールプロダクト開発へ ~ 顧客価値へ向き合い続ける挑戦 ~ @itohiro73 #開発生産性con_findy
Rails 5.0の注目ポイント Action Cable Rails API Active Record属性API テストランナー Rakeコマンドをrailsコマンドに統一 Sprockets 3 Turbolinks 5 Ruby 2.2.2以上が必須 本リリースノートでは、主要な変更についてのみ説明します。多数のバグ修正および変更点については、GitHubのRailsリポジトリにあるコミットリストのchangelogを参照してください。 1 Rails 5.0へのアップグレード 既存のアプリケーションをアップグレードするのであれば、その前に質のよいテストカバレッジを用意するのはよい考えです。アプリケーションがRails 4.2までアップグレードされていない場合は先にそれを完了し、アプリケーションが正常に動作することを十分確認してからRails 5.0にアップデートしてください。アッ
@joker1007 self.inspect @joker1007 パーフェクトRuby, パーフェクトRails 著者 Asakusa.rb, Yokohama.rb, Shibuya.rb データ分析基盤構築, Bigquery, インフラ全般 fluent-plugin-bigqueryメンテナ (株)Repro 宣伝タイム 現在のECSの活用状況 主要システムはほぼECSに移行完了 メインWeb, API, 各種非同期処理ワーカー クラスタは基本で15台 ASでその倍から3倍ぐらいまで増える 開発者用ステージング、QA環境等にも利用 何故ECS化したのか ミドルウェアのバージョン管理の容易さ Ruby, nginx, fluentd ... TaskDefinitionのリビジョンでロールバックできる 無停止デプロイメントの簡易化 AutoscaleのためのAMI管理不要 pul
Slides for the talk in RedDotRubyConf 2016.
be_a_rails_contributer.md これはなに Railsにプルリクストを送るときに知っておくと便利なお作法集 Railsにプルリクエストを送りたいけど何から始めたらいいのかわからない人向けの指針 お作法についてはRuby on Rails に貢献する方法 | Rails ガイドを参考にしています。 前提知識 Railsのコードを読むには、最低限次の二つの知識があったほうがよいです メタプログラミングRubyを読了した程度のRubyの知識 読もうとしている機能に関する知識をRuby on Rails ガイドなどで得ておく テスト環境 rails 自体のテストは rails-dev-box にある vagrant 環境越しにやります 基本的に各ライブラリ(例: activerecord)のディレクトリで rake test して実行します。全体は時間かかりすぎる>< rail
実際には、まだ本当の本番環境では運用できてなくて開発用のステージングで運用が開始できたぐらいで、他にもやること一杯あるんだけど、ある程度知見が溜まったのでまとめておく。 ちなみに、規模はそんなに大きくないがデータ量は多いアプリケーションで運用環境はAWSのECSを想定しており、現時点で普通のEC2ノードとコンテナで並行稼動している。 docker-swarmなりで自前でコンテナプールを構築してもいいのだが、そうするとサービスディスカバリとか考えなければいけないことが増えるので、後回しにしている。 (注: かなりサービス固有の事情が含まれるため、もし参考にされる方が居たとしても、そのままの形では適用できない可能性が高い) 追記: RailsアプリのためのDockerfileとdocker-compose.ymlのサンプル - Qiita コンテナ化のモチベーション CentOSのお守りからの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く