rails の検索結果:
…ド本体とは別の小さなRailsアプリケーションとして実装を進め、つい先日、一部の限定された利用者の方に向けて公開することができました。 今後も様子を見ながら公開範囲を拡大していく予定です。 再構築の背景 ではその「明確な問題」とはなんでしょうか。 最大のものは、ユーザー登録のあり方が時勢にそぐわなくなってきているのではないかという懸念です。たとえばクックパッドのアカウントはメールアドレスとパスワードを登録していただくのが基本になっています。しかし世の中のトレンドとしてEメール…
…ebpackを用いてRails上でJavaScript開発をするために必要な一連の流れを提供してくれる、Rails organizationで開発されているgemです。 これまで、Rails上でJavaScriptのパッケージをどのように管理するか、また、モジュール依存をどのように解決するかについて、多くの選択肢があり、それらをどう組み合わせて使うのかについて悩まされてきました。 このブログでも過去に何度か記事が投稿されており、その中でも複数の選択肢が上げられています。 we…
…llector は Rails Engine の形で gem として公開しています。 https://github.com/cookpad/gem_collector GemCollector 作成の動機 GemCollector を作った元々の動機は我々開発基盤でメンテナンスしている gem を更新したいとき、とくに非互換を含む変更を行いたいときに、変更の影響を受けるアプリケーションを把握することでした。 社内でよく使われている gem であれば、事前に社内での使われ方を調…
…Cookpad本体のRailsアプリケーションのCSSやHTMLに関しては自ら修正してGitHubでPRを投げており、ターミナルでの作業や開発フローに慣れている。 また、その開発を行う関係で「手元にXcodeなどの必要なツールキットも揃っている」というのがあると思います。 ViewControllerとView 初回ではViewControllerとViewについて学んでもらいました。 大事な点は2つあると考えています。 iOSアプリケーションで、ViewController…
…。 Ruby on Rails にはなりますが、react-rails を用いたアプリを開発する際の知見についてはこちらの記事で紹介しておりますので、興味の有る方はぜひこちらも御覧ください。 非SPAなサービスにReactを導入する iOS Clean Architecture のすすめ 3番目の発表では、マネーフォワードさんの iOS エンジニアである児玉さんから、マネーフォワードではどのような設計で iOS アプリを開発しているのかについての発表がありました。 iOS C…
…的にサーバーサイドはRails前提ですが、RailsにおけるReactの開発環境の構築方法などについて以下の記事や資料を参照ください。 モダンJavaScript開発環境 on Rails - クックパッド開発者ブログ 新規Railsアプリに小さく導入するReact // Speaker Deck コンポーネントの例 例えばブログ記事に「いいね」が押せる機能を考えてみましょう。機能としては いいねできる いいねが解除できる 自分がいいねしているかどうかわかる いいねしているユ…
…のジョブや bin/rails db:migrate のような単発のコマンドを実行するために使います。 直接 Docker を使っていたときと比較してよくなった点の一つに IAM ロールを利用できるようになったことがあります。 ECS ではインスタンス単位ではなくタスク単位で IAM ロールを利用でき、これにより AWS のアクセスキーを発行することなく AWS の API を利用したジョブを実行できるようになりました。 ジョブキューからの利用 先日の RubyKaigi 2…
…Git, TDD, Railsを1営業日で一巡りするという、忙しい構成でした。 Git編では、すでにGitを使っているエンジニアも多いだろうと想定して各コマンドの紹介などは最小限に済ませました。代わりに、Gitの内部構造を説明し「コミットを覚えておけばなんとかなる」感覚を掴んでもらうことを主眼に置きました。Gitあるあるである「rebase していたらわけわかんないことになった」に陥ったときにも落ち着いて復帰できるようになったと思います。 資料: https://speake…
…は Ruby on Rails アプリケーションにおける、モンキーパッチの当て方、そして、モンキーパッチの外し方について紹介します。 モンキーパッチの当て方 さて、あなたが Ruby でアプリケーションを書いていて、ライブラリなどの標準の挙動を変えるためにモンキーパッチを導入したいと考えたとします。 その際、まずは最初の原則を当てはめましょう。 最初の原則 - モンキーパッチを使わない まず、本当にモンキーパッチを当てる必要があるかを考えましょう。 それが何らかの不具合に対す…
…ごく標準的な構成の Rails アプリケーションです。 接続可能データソース(データベーススキーマ情報の取得元) Redshift PostgreSQL MySQL Google OAuth 2.0 認証 バッチ実行によるデータソースとの同期処理 Dockerfile, Docker Imageも提供しているため、多くの環境ではDocker経由で稼働させるのが簡単でしょう。 ユーザ認証 ユーザ認証は Google OAuth 2.0 認証のみ提供しています。 接続先データソー…
…の芳賀です。 既存のRailsプロジェクトの中でReact.jsを利用する機会があったので、その時にやったことについてまとめてみます。 私自身は普段RailsのサーバサイドとCoffeeScriptが中心で、最近のJavaScript開発環境についてあまりキャッチアップできていなかったのですが、それらの状況を把握しつつ試行錯誤で開発していった経験から、できるだけ「React採用してみたいけどJavaScript界隈よくわからない目線」で書いてみようと思います。 RailsでR…
…。 本稿では、特に Rails(ActiveRecord)を使って書かれたAmazon Redshiftを利用するようなバッチ処理において、 カーソル機能を簡単に利用できる "redshift_cursor" gem を紹介します。 まずカーソルについて、もう少し詳しく説明したいと思います。 そもそもカーソルって? カーソルはデータベースからデータを得るする際に、一度にすべてのデータを読み出すのではなく、 ある程度の単位(行数)に分けて読み出すための仕組みです。イテレータのよ…
…, Ruby on Railsの仕組み、役割 WEBrickやUnicornなどのHTTPサーバの話 2日目 データストア MySQL スロークエリ, explain, インデックス トランザクション, ロック レプリケーションとスケールアウト Memcached slab allocator, consistent hashingなど使う上で知っておきたい知識 Redis Memcachedに比べた利点や使いどころについて 全文検索 Solr, Elasticsearchの…
…I 開発を楽にする Rails のためのライブラリを作り、内部通信やモバイルアプリケーションのためのAPIサーバの開発に利用しています。 過去の Garage の紹介記事はこちらです。 RESTful Web API 開発をささえる Garage - http://techlife.cookpad.com/entry/2014/11/06/100000 RESTful Web API 開発をささえる Garage (client 編) - http://techlife.co…
…す。 まず、前半で Rails によるアプリケーション開発フロー、iOS アプリ開発、Android アプリ開発、サービス開発論、プログラミング論、機械学習と 6 つの分野の講義を受け、課題を行ってもらいます。 そして、後半は実際に社内でメンターとなるエンジニアと一緒に開発してもらいます。そのためエンジニアとほぼ同じ権限が与えられます。全てのソースコードは見れますし、データベースにアクセスでき、個人情報などのセキュアなデータ以外はすべて見れます。もちろん社内の主要なサーバに入…
…す。 このgemは、Railsのコントローラにリクエストが到達した時間を表すrequested_atメソッドを提供します。 class ApplicationController < ActionController::Base include Trice::ControllerMethods end class SpecialEventsController < Applicationcontroller def show ... if @event.policy.enab…
…ySQL、Ruby、Railsといった主要なものをはじめとして、テクノロジースタックのほとんどがオープンソースソフトウェアによって構成されいるといっても過言ではありません。 ですから、企業としてどのようにオープンソースソフトウェアに向きあうかということが、とても重要な問題になります。そして、そのための指針が、オープンソースソフトウェアポリシーです。 今回は、クックパッドがどのようにオープンソースソフトウェアポリシーをつくったか、その背景も含めてをご紹介いたします。 クックパッ…
…クスさんで行なわれたRails Upgrade Casual Talksで、Railsアップグレードの際にクックパッドが行なっている工夫について紹介しました。 影響範囲の予測が難しいRailsのアップグレードを安全に行なうための動作確認のやり方について参考になればということで、本記事でも改めて紹介いたします。 CookpadのRailsアップグレードの流れ Rails 4.1から4.2にアップグレードした際の例を紹介します。 CIにRails 4.2用ジョブを用意 まずはRa…
…ラリを使っています。Rails ユーザにとってはとっつきやすい便利なライブラリですが、日本語での情報がほとんど見当たらなかったため、簡単にご紹介したいと思います。 js-data とは JS 製のデータ管理用ライブラリです。RESTful API などを通じて取得できるデータ(リソース)を抽象化して、CRUD 操作を統一したインターフェースで行えるようにしてくれます。 リソースごとにオブジェクト(モデル)を定義したり、find でデータを取ってくるなど、ActiveRecor…
…uby 2.2.4 Rails 4.2.6 クライアントには elasticsearch-rails gem を使用 本稿で使用するサンプルコードは、GitHub 上で公開しています。 データを準備する まずは必要なデータを準備します。 今回は、以下のようなスキーマを使います。 ActiveRecord::Schema.define(version: 20160314093426) do create_table "areas", force: :cascade do |t|…
…々のサービスは普通のRailsアプリケーションが多い(モバイルアプリのみというケースもありますが)ものの、チームによって個性が出ています。 例えばES6でReact.jsなものもあればCoffeeScriptのものもありますし、Rubocopを入れているものとそうでないものがあります。 プロダクトが異なれば対象ユーザーも違うため、柔軟な技術選定ができるべきです。一方で必要に応じて他ドメインのモデルを簡単に利用できれば相乗効果が期待できます。 言い換えると、ユーザーに対してはサ…
こんにちは、クックパッド編集室の加々美です。 現在、食や暮らしのトレンドを発信するメディアであるクックパッドニュースの開発に携わっています。 クックパッドニュースは、1週間に100本以上の記事を配信しています。 このように比較的多くの記事コンテンツを作成する際、記事の基本的なパラメータ(例えば配信時間や記事の執筆者)をWebアプリケーション上で一つ一つ設定して記事を作成するのは時に煩雑な作業になりがちで、特に編集スタッフにとっては、スプレッドシート上で記事のパラメータを設定で…
…サービスとして1つのRailsアプリに分離しましたが、そのテストコード、特にJavaScriptに対するテストの書き方に悩んでいました。愚直にSeleniumなどを使いE2Eのようなテストを実施した場合、そのテスト実行時間や安定性、ロジックに対する網羅性が損なわれるのは明らかです。JavaScript界隈自体動きが早いので、ロジックに近いところのテストを十分に満たすには、その動きにも十分に追従する必要がありました。そのような動きの早いJavaScript界隈の話に追従しつつテ…
…- YouTube Railsアプリ開発環境の高速化 by 国分 崇志 次は国分さんによる、開発環境の高速化の話です。御存知の通り、クックパッドはRailsアプリケーションですが、世界的に見ても大規模なものになっています。これだけ大規模にもなるといろいろと調整をしないと開発環境もとてつもなく遅くなってしまい、開発効率が大きく下がってしまいます。この困難に対して挑戦し続けてきた内容がまとめられていました。 CookpadTechConf2016 vol.4 - YouTube …
…ッギングの容易性や Rails の RESTful な思想との親和性や既存のミドルウェアの再利用といった開発効率のほうを優先しているからです。 クックパッドでは、「機能やデータを提供する側」(Provider)と「そのデータを利用する側」(Consumer)の結合部分において Provider に拡張の余地を残しています。したがって、Provider はレスポンスを変更することがあります。例えば、「レシピ名」、「作者」、「レシピの説明」のようなレシピデータを1件返すような架空…
…絞り込むために利用。railsのcontroller, actionを想定しています) Presto(Redshift, PostgreSQL、Hiveなども可) 実装 with query_transitions as ( select time, unique_id, keyword as origin_query, lead(keyword) over (partition by unique_id order by time) as next_query -- ここが…
…パッドブログの開発でRails上にECMAScript6などのモダンなJavaScript開発環境を導入した経験を元にノウハウを紹介したいと思います。 RailsはSprocketsというgemでJavaScriptやCSSをコンパイルする仕組みが提供されています。Sprocketsによるasset管理の仕組みは非常によくできており、AltJSのトランスパイルやファイルの結合、minifyなど、assetのコンパイルに必要な機能を一通り備えています。 しかし、JavaScri…
…しています。 *1:対話型の実行環境 *2:autosave機能もあるので突然のカーネルパニックにも安心 *3:なお、Jupyterの"Ju"はJuliaのJuです *4:@lchin 曰く「RubyのキラーアプリがRailsならPythonのキラーアプリがpandasだ」 *5:残念ながら、BigQueryとpandasは筆者は使ったことがありません *6:numpy, scipyなどの導入はハマると結構大変だが、minicondaは一通り面倒を見てくれるので初心者には良い
…る通り、非常に大きなRailsのプロジェクトです。 参考) The Recipe for the World's Largest Rails Monolith このコードベースに乗って開発をすることで、社内にある便利な仕組みを手軽に使ったり、デプロイやエラーの監視などを含め、まるっと cookpad のプロダクトに背中を預けることができます。 プロダクトをゼロから作り始める時、事前準備をさほどせずとも作り始められるところがメリットでもあります。 cookpad のコードベース…
…のアプリケーションでRailsを採用しています。 Railsアプリケーションのバッチについては app/batches 以下に管理し、 rails runner コマンドで実行できるようにしています。 kuroko2ではそのようなRailsアプリケーション用に、RubyやRailsに関する環境変数を自動で設定する execute を拡張したDSLを用意して、それを経由してバッチを実行しています。 もちろん、Rails以外にも対応しています。 具体的な例として、aamine の…