インフラストラクチャー部の青木峰郎です。 最近はDWH運用の傍ら、所属とまったく関係のないサービス開発のためのデザインスプリントをしつつ、 Java 10でgRPCサーバーを書きつつ、 リアクティブプログラミングを使った非同期オーケストレーション層を勢いだけで導入したりしています。 ですが今日はそれとはあまり関係なく、クックパッドの中核サービスであるレシピサービスの アーキテクチャ改善プロジェクト、「お台場プロジェクト」の戦略について話します。 これまで、お台場プロジェクトで行った施策について対外的に発表したことはあっても、 全体戦略について話したことはありませんでした。 その一番の理由は、正直に言って、プロジェクトオーナーであるわたしにもプロジェクト全体の姿が見えていなかったからです。 しかし現在プロジェクト開始から1年半が経過してようやく全貌が見えてきたので、すべてをお話ししようと思い
リレーションの関係にある複数のモデルを連動して追加したいときの方法いろいろ. リレーション関係なくても、インスタンス生成と同時に特定の処理を実行したいときにも使える. 呼び出し側でcreateにブロック渡す rspecなどのテストコード側でカスタムに関連データを追加する方法. shop has_many staffsのリレーションができている前提で、以下のようにbuildやcreateにブロックを渡せば、ブロック内で生成されたインスタンスを自由に修正できる. # # 生成されたインスタンスの内容をブロック内で自由に修正できる # shop = FactoryBot.build(:shop) do |s| s.name = "あいうえお" end # # 永続化せずにインスタンス生成 # shopにひもづくstaffをブロック内で追加している # shop = FactoryBot.buil
はじめに 先日スタック・オーバーフローでこんな質問に回答しました。 webサーバー、アプリケーションサーバー、Rackといった仕様や概念と、WEBrick、Unicorn、Pumaといった実装の関係が頭の中で結びつきません 質問者の方はwebサーバー、アプリケーションサーバー、Rack、Unicorn、Pumaと言った用語や概念の理解がこんがらかっているように見えたので、このあたりをきれいに説明している記事を探していたところ、以下の記事を見つけました。 A web server vs. an app server - Justin Weiss スタック・オーバーフローでは記事の一部を抜粋して「ざっくり翻訳」したのですが、それだけで終わらせるのはもったいない気がしたので、Qiitaには全文を翻訳して載せておこうと思います。 これを読むと、あなたもwebサーバーとアプリケーションサーバーの違い
環境 osx10.9.1 ruby2.0.0 rails4 MySQL5.6.x 経緯 既にMySQL上に存在するtableを使ってrailsしてみた。 MySQLと接続する 下のサイトを参考にして、database.yamlを定義。 - development: adapter: mysql2 encoding: utf8 database: my_db_name username: root password: root host: localhost pool: 5 timeout: 5000 参考サイト http://threetreeslight.com/post/61834000065/rails-db MySQL上のテーブルからscheme.rbを生成する。 rake environment -v -t RAILS_ENV=development db:schema:dump
おとなしく同じ名前空間にモデルがあるとは限りません。たとえば、AwesomeLibrary::AwesomeModelという名前のモデルがあってそこと1:Nの関係を持たせたいとしましょう。 普通は has_many :awesome_models とかやるところですが、この場合はAwesomeModelを探そうとしてうまくいきません。答えはこちら。 has_many :awesome_models, classname: "AwesomeLibrary::AwesomeModel" おもえばなんてことはありませんでしたね。クラス名を指定してやればよかったわけです。 困った理由 自動生成されたとあるモデルに、has_manyしたいという事情ができてしまいました。困ったことに件のモデルは実体ライブラリに書かれているし、モデル名の変更なんてもってのほか。ならばどうするか…ということで調べてみまし
RailsでFormを扱う時は、Modelと紐付けることで、validationなどの設定はModelに書くことができ、非常に便利です。 ですが、DBと関係ない場合は紐付ける対象のModelが生成されていません。 そこで使用するのがActiveModelです。 https://github.com/rails/rails/tree/master/activemodel 使い方 使い方は簡単で、既存のModelと同じように扱うことができます。 Modelクラスの作成 まずは、Formのプロパティを持ったModelクラスを作成します。 このクラスはActiveModel::Modelをincludeさせます。 class Hoge include ActiveModel::Model # Formで使用するプロパティを定義する attr_accessor :foo, :bar, :piyo #
まとめようと思った経緯 Railsのネストしたrouting書く時に毎回調べてる気がするから自分のブログにまとめておきたい— shiro16 (@shiro166) January 5, 2015 まとめてあるブログもいくつかあるけど結局自分で書いた文章が一番分かりやすいっていうあたり前のはなし— shiro16 (@shiro166) January 5, 2015 と思って書き始めたのが1月の中頃 何を言っているのかわからねーと思うが 気づいたら違う記事をいくつか書いて公開していた。 (いつのまにかRuby2.2.1もリリースされていた・・・) 環境 Ruby - 2.2.1 Rails - 4.2.0 urlを直接指定する get '/games', to: 'games#index' get '/games/:id', to: 'games#show' get '/games/te
scaffoldのコードを追った時に、詳細に追ったつもりであったが、実は一つ理解できないことを曖昧なままにしていた。 Ruby on Railsのコードを見ていると頻繁に「:action => 'show'」のような形式*1のオプション設定の書き方が出てくる。意味としては「actionというキーは、showという値だよ。」ということになる。...のだが、悩んでしまうのは「'action' => 'show'」、「:action => :show」、「'action' => :show」と書いても、どれも同じように機能してしまうのだ...。 4通りの書き方が許されるのは、許容範囲が広くて良いのだが、それでは、:actionと'action'は全く同じものかというと、そういうことでもないようだ。'action'が文字列というのは素直に理解できるが、:actionはシンボルと呼ばれている。シンボ
大まかな流れ Vagrantの中にRails環境を導入 ↓ Mysql,Railsの導入はできた ↓ いざRailsを走らす ↓ ローカル環境ではアクセスすることができたが,ホストOSでのブラウザ接続が出来なかった← これが問題 ※環境構築について:Vagrant 1.8 + CentOS 7 + VirtualBox 5 + Ruby on Rails + Mysqlで開発環境構築を参照しながら行いました.(すごくわかりやすい説明でやりやすかったです.) 問題点について Railsが動いているにもかかわらずローカルのみで動き,ホストサーバに接続できなかった. 実際の画面はこんな感じ 解決方法 行った解決方法① Railsの起動方法を変えてみた. Rails var4.2以降では通常の起動ではローカルのみの起動となってしまうので オプションで -bとIPアドレス(基本的に0.0.0.0)
◯ 事象 ruby on rails のチュートリにて rails のサーバーを起動して、いざブラウザからアクセス!! 「Google Chrome では localhost:3000 に接続できませんでした」 /(^o^)\ ◯ 現状確認 3000でプロセスが待ってるのは確認できた。ふむ [vagrant@localhost ~]$ netstat -anp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreig
Rubyのソースコードを読むとき、grepやctagsだけで読んでるとどこにどういう値が入るのか頭で考える必要があり大変。 そういう時、実際に動かしながらpryを使って中身を確認すると、どういう動きをしているのか楽に把握できる。 普通のエディタを使ってRubyを書いている人にとって、IDE的な機能を提供してくれるのがpryといえる。 本稿では、この記事を書く前の私のように、この次の「最低限の使い方」くらいしかpryを使いこなせていない人向けに、便利な機能をひと通り説明する。 最低限の使い方 まだpryを使ったことがない人はこれだけ知ってれば十分な気がする。 binding.pryで任意の場所からREPLを立ち上げる ソースの任意の箇所にbinding.pryを書いてRubyのプログラムを走らせると、実行中にその行でストップしてpryのREPLが立ち上がり、その環境での変数がどうなっているか
Webサービスをすぐに動かせる!HerokuでRailsアプリを公開する方法【初心者向け】 Webサービスをすぐに公開できるツール「Heroku」を使って公開手順を紹介。プログラミング初心者向けに、Ruby on Railsで開発したアプリケーションをHerokuで公開する方法を解説しています。無料のフリープランを使って説明。 テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査 Webサービスを自分の開発環境で開発できたら、いよいよ公開というこ
http://www.rokurofire.info/2013/04/10/webservice/ の続き 以下は、以前私がとても勇気づけられた記事(自分でWEBサービスを作りたいと思っている人へ)と同じように、時系列を追ってどんな勉強をしたかを書いておきます。 事の発端 8月 お腹痛い。病院行ったら急性虫垂炎。 → 手術の場合は大腸半分取るよん。 9月 いろいろ手をつくして一時退院。この時点でHTML、JS、CSSはできるが、サーバサイドの知識がゼロでした。Apacheでローカル環境構築はやったことあったくらい。 すぐにVPSを借りてサーバ周りをいじり始め、環境を作っては壊しの繰り返し。やっているうちに、Apache+PHP+MySQL+Git くらいはすぐに環境構築できるようになりました。 10月 これから始めるならRubyがいいよとアドバイスを受け、なぜかRailsの本を買い、1か月
複数の Mac で開発していると、ローカル環境を統一するのが面倒になってきます。マシンを買い換えたときの環境構築も結構手間です。 そこで新しい Rails プロジェクトからローカル環境を作らずに EC2 上で開発してみることにしました。バックアップやスケールアップも簡単なので開発環境にぴったりかもしれません。 Ruby のインストール Ruby のインストールは、先日書いたエントリーを参考にしてください。 xbuild と Cloud-Init で EC2 に Ruby 環境をサクッと作る Rails のインストール Rails の前に足りないパッケージをインストールしておきます。 SQLite は必要に応じてどうぞ。
はじめに 最近エンジニア界隈で話題沸騰中のSlackですが、IRCに比べてBOTを作る際に手間がかかります。自称クソボットクリエイターの私にとってはこれは死活問題です。 そこでボットを超簡単に量産できるプロダクトを開発して公開したのでご紹介いたします。 BotHeaven (ぼっとてんごく) Slackボットを大量生産できるプロダクトです。いわばボットファームです。 SlackのOAuthでBotHeaven*1にログインし、Javascriptで数行のコードを書くだけでSlackボットを簡単に生成できます。 HTTP通信機能や、ボット毎のストレージなどを持てることが特徴です。 デモ このような感じでボットを実装します。 するとこのようなSlackボットが生まれます。 仕組み Rails + V8 + Slack インストール方法 VPS等はもちろん、Herokuにもデプロイして使えるよう
はじめに こんにちは.私はWebスクレイピングが大好きなのですが、Rubyでもっと簡単にスクレイピングができればと思い、ライブラリを書いてみました. ようやくREADMEとUSAGEが書けたので公開しようと思います. ソースはGithubで公開しています. 特にドキュメントの英語が大変怪しいので、つっこみいただけると喜びます. tac0x2a/yasuri gemでも公開しているので、以下のコマンドで簡単にお試しできます. 簡単なサンプルと解説を書いてみました. Yasuriでお手軽スクレイピング よろしければ使ってみてください>< Yasuri とは Yasuri (鑢) は簡単にWebスクレイピングを行うための、"Mechanize" をサポートするライブラリです. Yasuriは、スクレイピングにおける、よくある処理を簡単に記述することができます. 例えば、 ページ内の複数のリンクを
acts-as-taggable-on を使って Rails アプリにタグ付け機能を追加する際に、UI には jQuery プラグインの Tag-it が良さそうなので使ってみた。この両者を合わせると良いよ、という記事はあったものの、具体的にどうしたら良いかまで書いてある記事を見つけられなかったので、せっかくなのでまとめてみる。 下準備 rails new して、タグ付けする Article モデルを scaffold で作成しておく。Rails のバージョンは 4.2.0 を使用。 rails new -T acts_as_taggable_on_sample cd acts_as_taggable_on_sample bin/rails g scaffold article title:string body:text acts-as-taggable-on の導入 acts-as-t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く