事業成長を加速させたエンジニアリングのウラ側 https://medpeer.connpass.com/event/211745/
![Deploy Rails apps in 2021](https://cdn-ak-scissors.b.st-hatena.com/image/square/f370be797d46e6336a1e1d40fccec378ed9dad85/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Ff5a3685365cc48718ce3dec5db49e244%2Fslide_0.jpg%3F18188514)
事業成長を加速させたエンジニアリングのウラ側 https://medpeer.connpass.com/event/211745/
はじめまして、ハートレイルズの境 (@kazsakai) です。 色々あって今は長野県の伊那という、地理的には日本列島の中心らへんだけどあらゆる大都市から満遍なく遠い片田舎に暮らしています。(ちなみにアニメ聖地巡礼発祥の地だそうで) Kaizen Platformさんの社員ではなくパートナーという立場ではありますが、ほぼ最初期くらいから開発に関わっているエンジニアの一人として、今回こちらのブログにお邪魔させていただきます。 Rails の不要テーブルと migration ファイルを整理したい Kaizen Platformさんのプロダクトは日々着実に拡大を続けていて、githubの社内リポジトリ数も今や200を超えていますが、そんなKaizenのプロダクトも最初期には単一のRailsリポジトリからスタートしました。 最初期のプロダクト名「planBCD」にちなんだそのRailsリポジトリ
Jul 16, 2018 09:49 · 158 words · 1 minute read rails いまだとどうするのが良いんだろうね、と思い調べたのメモ。サーバはPumaを使う前提で、2018/07時点での話。 証明書準備 昔はこれが色々手間だったのだが、今はmkcertという大変便利なツールがあり、これを使えばすぐ終わった。 READMEに書いてあるとおりにインストールすれば、Linux / Macについては直ぐ準備出来ると思う。因みにWindowsは「Windows will be supported next.」とのこと(2018/07時点)。 で、このツールを使い、localhost用のcertificateとkeyファイルを生成する。 $ mkcert -install Using the local CA at "/home/yaginuma/.local/share/
amakan での設計を例に、RailsでSingle-Page Applicationをつくるときの自分のやり方をまとめてみます。 Gem 「JavaScriptで書かれたReactのコンポーネントからHTMLを生成する」というのをRubyでやるために、RubyのV8エンジン実装であるmini_racerというGemを使う。この処理を楽に実行するために、react_on_railsというGemも使う。 gem "mini_racer" gem "react_on_rails" View body要素内のHTMLは全てReactで生成するので、layout以外にviewのテンプレートは存在しない。 Controller 初回リクエストの場合はHTMLを返す ページ遷移時に呼ばれるリクエストの場合はJSONを返す 外部サイトからブラウザバックで戻ってきたときにJSONを見せない という要求に
こんにちは。技術部の国分 (@k0kubun) です。 3/28にクラウドワークスさんで行なわれたRails Upgrade Casual Talksで、Railsアップグレードの際にクックパッドが行なっている工夫について紹介しました。 影響範囲の予測が難しいRailsのアップグレードを安全に行なうための動作確認のやり方について参考になればということで、本記事でも改めて紹介いたします。 CookpadのRailsアップグレードの流れ Rails 4.1から4.2にアップグレードした際の例を紹介します。 CIにRails 4.2用ジョブを用意 まずはRails 4.2にアップグレードするためのrails42ブランチでテストを通します。リリースするまでこのブランチはmasterからrebaseし続けるので、リリースまでテストを通る状態を保つため、CIにrails42ブランチ用のジョブを用意しま
クックパッドの社員が発表するCookpad TechConfというイベントの第一回が今日行われ、「Railsアプリ開発環境の高速化」というテーマで話してきた。 開発環境の改善について 僕が技術部に入る前、サービス開発をやる中で一番不満だったのが開発環境のパフォーマンスだったので、技術部に配属されたころからこの仕事をやりたいと思っていた。 今回は先輩方が既に行っていた開発環境のパフォーマンスチューニング - クックパッド開発者ブログの一部を紹介しつつ、その続きとして自分がやってきたことを発表した。 業務で出した成果のうちいままで外部で発表したのはbyebugの高速化くらいだったので、普段僕がどんな仕事をやっているのか紹介する良い機会になった。 発表内容の補足 思ったより15分の枠で話せたことが少なかったので、発表内で話し足りなかったことについて書く。 libsassおすすめです 急いでて全然
技術部の小野(taiki45)です。クックパッドではこれまで様々なデータベースの負荷対策を行ってきましたが、シャーディングは行われていませんでした。しかし先日クックパッドの認可サーバーが利用している MySQL サーバーの負荷分散のためにクックパッドで初めてのシャーディングを行ったので、Rails アプリケーションでのシャーディングの事例のひとつとしてその際の手法をご紹介したいとおもいます。 構成 Before データベースは1マスター、1ホットスタンバイ、バッチ用の1リードレプリカで構成されています。Read オペレーションのほとんどはキャッシュ層に逃しています。 After データベースの各ロールにつきそれぞれ1台ずつマシンが増えています。 シャーディングが必要になった背景 認可サーバーのアクセストークンの作成・削除時の Write オペレーションが急増し、レコード数自体も急増していて
■ devise をあまりオススメしない理由 いまいち使うのに気が乗らない理由はこんな感じ コントローラレイヤ以降に作用する gem は inspect が物凄くやりにくい、params ないし、必要なコンテキストを全て揃えた上で、コントローラを new して action を呼んで、みたいなこと、考えただけでもだるい テストを書いていたとしても、環境要因、特にセッションとクッキーに影響して挙動が変わる箇所が多すぎるので、全ての環境で正しく再現することが難しい フルスタックすぎることから Rails よりも devise にロックインされることの方が多くなって負債化する そもそも devise で便利になることの多くは、自分で作ってもわけない物が多い 使うからには、devise のコードも全部読むし、PR も投げるしという前提かつ、上のようなことを全て乗り越えるつもりなら僕は止めません!
すいません。締切守れませんでした…。 やっぱ、java-jaの忘年会の翌日は辛い…。 はじめに Webシステムを開発していると切っても切れないのがJavaScriptです。 Railsはかなり早い時期からalt-JSや結合、minify等を組み込めるようにフレームワークにそれを取り入れてきました。 それを支えているのがRails3.1から導入されたsprocketsです。 それに伴なってJSのライブラリをどうやって管理するかという点について、独自の路線を取ることになりました。 JSのライブラリを同梱したgemパッケージにラップしてrubygemsとして管理する方法です。 ある程度は上手くいっていたし、今もその流れは続いているんですが、時々問題になることもあります。 例えばメンテナの対応時期がズレてて古いバージョンのままだったり、似たようなgemが乱立してややこしくなったり。(backbon
Rails 4.0からActiveRecordにstrict_modeが導入され、デフォルトでは接続時にsql_mode = STRICT_ALL_TABLESをセットするようになりました。 これは、既に運用されているDBに接続する等なんらかの理由でMySQL側で適切な設定が行えていない場合有用な動作ですが、そうでない場合、サーバー側の設定を鑑みずにクライアント側が設定を上書きするべきではないでしょう。 そのため、database.ymlでstrict: falseと設定することでこの動作を無効にすることができましたが、Rails 4.2.0ではこの動作が変更され、strict: falseのときはstrictでない状態にするためsql_mode = ''をセットするようになりました。 MySQLのデフォルトのsql_modeに依存して既に通っていたはずのテストが通らなかったりすることがあ
技術部の高井です。 最近、日本でもマイクロサービスという言葉が流行しつつあります。 今回は、なぜクックパッドがマイクロサービスを選択したのか、また実際にどのようなやり方をしているのかということを紹介します。 Conwayの法則 ここ数年の間、クックパッドはレシピの投稿・検索サービスから「食を中心とした生活のインフラ」として事業領域を拡大しつつあります。海外レシピサービスの買収による海外展開は、単なる金銭的な関係にとどまらず、人的・技術的な交流も含めて本格化しつつあります。また、「モバイルファースト」を標語とするモバイルアプリケーションへの取り組みも加速してきました。 事業領域の拡大やグローバル展開、モバイルファーストといったビジネス要求の変化に応じて、会社の組織構造も変化しています。そして、Conwayの法則 として知られているように、組織構造とソフトウェアアーキテクチャには密接な関係があ
例外を利用して実装すると便利な場合が多い この投稿では、HTTP経由でJSONを返すようなWeb APIをRailsを利用して実装するとき、エラーレスポンスを返す場合の処理をどう実装するとやりやすいのか、というニッチな話題に触れる。APIでエラーを返したいとき、即ち400以上のステータスコードと共にレスポンスを返したいような場合、どう実装するのが良いか。もしリクエストの処理中にエラーが検出された場合、それ以降の処理を行わずに直ちに中断してエラーレスポンスを返したいという場合が多いため、例外を利用して実装すると便利な場合が多い。 例外を利用しない方が良い場合もある 1つのリクエストに複数の問題が含まれている場合、先に見つけた問題だけを報告するようなエラーレスポンスを返すのか、それとも問題を抱えながらも進めるところまで処理を進めて報告可能な情報を全て含むようなエラーレスポンスを返すのか、という
Finally, just a small release! Changes since 6.1.1: Avoid detecting Phlex components as dynamic render paths (Máximo Mussini) Avoid detecting ViewComponentContrib::Base as dynamic render paths (vividmuimui) Avoid copying Sexps that are too large (#1818, #1546) Add EOL date for Ruby 3.3.0 Remove deprecated use of Kernel#open("|...") Remove safe_yaml gem dependency Update Highline to 3.0 (#1812) Com
沖縄開発合宿2日目: Rails用のDBスキーマ管理ツール scheman-rails を開発した。 使い方 db/schema.sql に理想的なスキーマをSQLで記述する rake db:schema:diff で現在のDBのスキーマとの差分を確認する rake db:schema:apply でSQLを適用して差分を埋める 基本的にはこれの繰り返しで、開発者は理想的な db/schema.sql を保つことに集中していれば良いという世界観。 DBスキーマどういう構成だったったっけという場合にもこのファイルを見れば良いのでちょっと楽。 導入時に既にDBが存在するときは、いちいちdb/schema.sqlを書くのはだるいので適当に mysqldump --no-data --compact の結果を貼り付けとけば良いかもしれない。 解決されそうな問題 この辺が解決できそう。 複数ブランチ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く