You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Rails Developers Meetup の年末拡大版である、Rails Developers Meetup 2017で発表させていただきました。 Railsアプリケーションの可読性を保ちつつ開発をすすめるにはどうしたらよいか、みたいな話です。資料はこちら 所感 この辺の情報は、英語圏だとちらほら情報あるのですが、まだまだまとまった統一見解みたいなものはなくそれぞれ思い思いのやり方でやっているような状況です。日本の現場だと、可読性を保つための方法はほとんど共有されておらず、共有されているとしてもチーム内で口伝に近いやり方*1で行われており、みんなの形式知になっているとは言い難いです。 楽に可読性の高いコードを書くための形式知(もしくはツール)があるとみんな幸せになれると思うので、ブログ書きやYubaの開発の進捗を頑張りたいと思います><。 *1:コードレビューのときなどで指摘する
前回 作った環境をSSL化したいと思ったので、調査がてらに構築してみました。 最近はかなり安くなったとはいえ、検証のためにお金を出してSSL証明書を発行するのも嫌だし、 オレオレ証明書もなんだかなぁ〜 と思ったので、最近話題の Let's Encrypt(Certbot) で証明書発行をしてSSL化したいと思います。 Let's Encrypt とは Let's Encrypt 総合ポータル Let's Encrypt は、クライアントソフトウェア「Certbot」を使用することで、SSL/TLS サーバ証明書の取得・更新作業を自動化できる仕組みになっています。 独自ドメインがあれば、簡単なコマンド操作で SSL/TLS 証明書(無料)を取得できます。 構築手順や各ツールのバージョンは 前回 と変わりません。 なので、説明は追加した箇所以外は省略します。 前提 作業はすべて ConoHaV
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Things I learned developing Ruby and Rails apps over the past 3+ years | by Filippos Vasilakis | Kollegorna 原文公開日: 2017/01/30 著者: Filippos Vasilakis 2017/11/20: 初版公開 2023/06/08: 訳文を更新 順序は特に決まっていません。 🔗 1. トップレベルにrescue_fromを書く ルートコントローラにrescue_fromを書くと、その下で発生したすべての例外をキャッチできるので非常に便利です。Webアプリにこれを追加すると、リクエスト/レスポンスのサイクルで実行されるほとんどのコードがさらに便利になります。 シンプルなAPIを例に考えます。rescue_fro
It would be a great world if everything ran without errors. Validating inputs from users and handling various other kinds of error ranging from databases access, file access, network issues or any other is a reality of the software. We all have written programs where the cases of handling erros are so much that it increases the codebase by manifold. This make the life of the maintainer a hell, yet
Dockerに興味があったものの、コマンドを叩く以外はほとんど手を出す機会がなかったので、 夏季休暇の間にしっかりと基本を身につけるべく、検証用にRails環境を構築してみました。 思ってた以上に悪戦苦闘したので、記憶からすっ飛ばないようにちゃんと記事として残しておこうと思います。 前提 作業はすべて ConoHaVPS のUbuntu16.04上でやってます。 OS上にすでに Docker と docker-compose がインストール済みという前提で話を進めます。 この環境では フロント に Nginx を配置して、バックエンドの Puma にプロキシしています。 バージョン ホストOS(Ubuntu16.04 Xenial Xerus) Docker(17.06.1-ce) docker-compose(1.11.2) Nginx(1.15.8) Ruby(2.5.1) Ruby
導入 Docker Composeを利用して、複数のdocker containerを使った環境の設定例を紹介します。なお、Docker ComposeはWindowsでは使えません。Max OSX or 64bit Linuxのみ対象となっています。 準備 Docker Toolboxをインストールできれば環境はすべて整います。 https://www.docker.com/products/docker-toolbox docker, docker-machine, docker-composeといったツールとVirtualBoxがインストールされるはずです。 次にmachineの準備 https://docs.docker.com/machine/get-started/ $ docker-machine create --driver virtualbox default $ do
2. アプリケーションで定義したクラスを直接使わない app/models 下のモデルクラスなど、マイグレーションファイルの外部に定義している、将来実装を変更する可能性のあるクラスを直接利用することは禁じ手と考えた方がいいでしょう。 なぜかというと、マイグレーションファイルというのは、未来にわたって末永く、書いたときの意図どおりに動く 必要があるからです。言い換えれば、マイグレーションファイルのコードは、マイグレーションファイル内で閉じていて、凍結されていることが望ましい のです。 このような単純な例でさえ、将来、User::DEFAULT_TEL の値(実装)が変更されてしまったら、その時点で "だいぶ以前の古いマイグレーション" になっているこのコードの挙動も同時に変わってしまいます。マイグレーションコードで過去の定数値を使うように変更する、といった対応をし忘れれば、例えば、本番DBと
開発を手伝っている Rails アプリの config/routes.rb の書き方を見直した。 ルール以下のようなガイドラインを設け、これを守るように書き換えた。 resource(s) などの DSL の利用を避けるパスの辞書順に定義するHTTP メソッドの部分だけ特別にインデントする具体例こういう形の、素朴なルーティングがひたすらに羅列されていくコードになる。実際のコードでは数百行以上に及ぶ。基本的に1行に1つのルーティングが定義される。 MyApp::Application.routes.draw do get '/' => 'top_pages#show', as: :top_page delete '/api/applications/:applicaiton_id' => 'api_applications#destroy', as: :application get '/a
2017.07.28 週刊Railsウォッチ(20170728)bootsnapがRailsで正式採用、Ruby Prizeの推薦開始、PostgreSQL配列の重複を除去ほか こんにちは、hachi8833です。南極の氷が増えているのか減っているのか、だんだんよくわからなくなってきました。 7月最後のRailsウォッチ、いってみましょう。 Rails 5.1.3rc2と5.0.5rc2がリリース(Rails公式ニュースより) 公式: Rails 5.0.5.rc2 and 5.1.3.rc2 have been released rubyonrails.orgより Changelog: v5.1.2...v5.1.3.rc2 Changelog: v5.0.4...v5.0.5.rc2 つっつきボイス: 「バグフィックスが中心だろうし、正式版来たらアップグレードするかな」「先週rc1リリ
更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基本的には変わらないと思います。リンクは可能なものについては日本語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive
復習メモ。 バリューオブジェクトはActiveRecordの複数のカラムをオブジェクトにまとめたもの。 使い方 第一引数に、使用したいバリューオブジェクトを設定、取得するためのメソッド名を指定 第二引数はオプション。mappingでActiveRecordのカラムとバリューオブジェクトの属性をマッピングさせる。 composed_of :address, :mapping => [ %w(address_street street), %w(address_city city) ] 他のオプション :class_name デフォルトは、第一引数で指定したアクセサ名がバリューオブジェクトのクラス名になるけど、:class_nameで指定することも出来る。 :allow_nil バリューオブジェクトにnilを設定できるようにする。nilを設定すると、マッピングされている全ての属性がnilになる
はじめに 調べ物をしていたら、複数カラムをバリューオブジェクトに構成することで仮想的に一つのカラムとして扱う、composed_ofなるものを見つけたので備忘録します。 住所-よくあるパターン class User attr_accessor :city_address, :town_address, :building_address def address city_address + town_address + building_address end end attr_accessorの部分は実際にはカラムになってると思ってください。 上のパターンにはいくつかの問題があります。 addressのような整形用メソッドがモデルを汚してしまう 本来意味を持つのはaddressなのに、メソッドで返ってくるのは単なる文字列 一旦addressを取得しても、そこからcity_addressを
0. はじめに Qiitaはじめ、さまざまなところでRailsのActiveRecordの内部結合や外部結合に関する記事がありますが、それらがまとまって存在していると良いリファレンスとなるのではないかと思い本記事を作成しました。 また、Rails5で動作確認しておきながら、Rails5から追加されたleft_outer_joinsなどは載せてません。今後、載せていきたいと思います。 group byやサブクエリ(副問い合わせ)に関しては下記もご参照ください。 ActiveRecordにおけるGROUP BYの使い方 ActiveRecordでサブクエリ(副問い合わせ)と内部結合 0-1. RubyとRailsとPostgreSQLのバージョン $ ruby -v ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15] $ r
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く