ソーシャルゲームのような高負荷がかかるWebアプリケーションにおいては、何十, 何百台ものサーバーでスケールアウトするのが当然の時代になりました。特にDBサーバーでは垂直分割、水平分割による複数のDBへの負荷の分散が行われ、アプリケーション側でハンドリングすべきことが増してきています。 今回は、G…
![Ruby on Rails & Vitessによる
DBスケールアウト](https://cdn-ak-scissors.b.st-hatena.com/image/square/e01063c500392474b555e99ddfcc4f64535bd68c/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Ff01ed7288ee243aa972e7f7b7d460ae2%2Fslide_0.jpg%3F5863874)
なぜエラートラッキングシステムが必要なのか 多くの開発者は、開発環境での手動テスト、テストコードの実装に多くの時間をかけている事と思います。 しかしながら、本番環境やステージング環境でもエラーは起こりうるものです。 このようなエラーに気づくのが遅れるほど、ユーザ体験は低下し、結果的に機会損失を招く事となります。エラーに気づいた際に、過去のログをgrepしたりするのも、非常に労力がかかります。 このような課題を解決するため、エラーの概要、Backtrace、発生時のセッション情報などの詳細情報をWebインタフェースで管理でき、類似したエラーを分類したり、担当者へメールやSlackで通知するための仕組みがエラートラッキングシステムです。 代表的なものとしてAirbrakeがありますが、スタートアップとしては少しお高い値段です。 Errbitとは AirbrakeのOSSクローンです。実際にはA
皆さん、rails-assets は使っていますか? rails-assets は、Gemfile で js や css のライブラリを指定して、バージョン管理や依存の解決などをしてくれるとても便利なサービスです。 しかし最近ではその役目を終えたとして、最大で今年末でサポートを終了するとしています。 Future of rails-assets · Issue #291 · rails-assets/rails-assets そしてもう閉じることが決まったプロジェクトだからなのか、あまり活発にメンテナンスをしていないような印象を受けます。昨年からrails-assets を運営しているサーバが不安定になることが多く、rails-assets に依存しているプロジェクトを持つ会社さんは、bundle update やデプロイに失敗して辛い日々を過ごしたのではないでしょうか。 そんな折、明日
日々、bundle updateしてますか! circleci-bundle-updateとcircleci-bundle-update-prを使って、bundle updateの Pull Requestを自動化する手順をまとめてみます。作者の記事を読めばいいっちゃいいんですが、地味に抜けていた手順と各ステップは何のために必要かを整理してみました。 このgemは、Pull Requestに各gemの差分リンクを貼ってくれるのが便利だな!って思って採用してます。素敵なgemをありがとうございます。 github.com github.com ステップは CircleCI経由でbotからgithubにpush出来るようにしておく CircleCI経由でbotからgithubにPR作れるようにしておく 外部からCircleCIへbuild指示できるようにする 外部からcronでCircleCI
はじめに Rails 5.0.0.beta1が2015年12月18日にリリースされました。 また、それにあわせてRuby on Railsの公式ブログに主な変更点がまとめられています。(投稿者はあのDHH氏のようです) Rails 5.0.0.beta1: Action Cable, API mode, Rails command beta1がリリースされたということは、Rails 5.0の正式リリースもそろそろ近いということです。 (ちなみにRails 4.0ではbeta1の4ヶ月後に正式版がリリースされました。) Railsユーザーであれば、みなさん早かれ遅かれRails 5.0を使うことになると思うので、事前に予習しておきましょう! というわけで、上記の公式ブログの内容を翻訳してみました。 これを読めばRails 5.0でどういう変化が起きるのか、だいたい理解できるはずです! 翻訳の
$ bin/rails g scaffold user name:string mail:string password:string invoke active_record create db/migrate/20151214145437_create_users.rb create app/models/user.rb invoke test_unit create test/models/user_test.rb create test/fixtures/users.yml invoke api_resource_route route resources :users, except: [:new, :edit] invoke scaffold_controller create app/controllers/users_controller.rb invoke test_un
投稿推進部の外村(@hokaccha)です。 クックパッドブログの開発でRails上にECMAScript6などのモダンなJavaScript開発環境を導入した経験を元にノウハウを紹介したいと思います。 RailsはSprocketsというgemでJavaScriptやCSSをコンパイルする仕組みが提供されています。Sprocketsによるasset管理の仕組みは非常によくできており、AltJSのトランスパイルやファイルの結合、minifyなど、assetのコンパイルに必要な機能を一通り備えています。 しかし、JavaScriptにおけるモジュールの依存関係の解決や、ライブラリの管理などについてはモダンなJavaScript開発と乖離してきているのが現状です。そこで、Railsでも以下のようなことを実現できることを目標に環境を作りました。 ECMAScript6のシンタックスを使う モジュ
『RailsエンジニアのためのSQLチューニング速習会 - connpass』に参加してきました。すごく勉強になったので、 そのときのメモです。@minami7o さんありがとうございました! あとこの記事は、エムスリー Advent Calendar 2015 - Qiitaの13日目です。 🍄 スライドWantedlyの @minami7o さんの発表スライドです。 🐝 説明用のブランチ勉強会で共有されたテストデータを使えるGitHubのブランチです。 south37/sql-tuning - GitHub git clone git@github.com:south37/sql-tuning.git cd sql-tuning bin/rake db:create pg_restore -j 4 --verbose --no-acl --no-owner -d sql-tunin
railsで作ったアプリケーションをnginx, unicornの環境に対してcapistranoを使ってデプロイするまでの過程を書いていきます。 ruby 2.2.3 (rbenvを使用してインストール) rails 4.2.0 nginx 1.8.0 MySQL 5.6.23 unicorn 前提 デプロイ先ですでにNginx等の設定は終わっている デプロイ先のディレクトリとして、/var/wwwを作成しておく database.ymlとsecrets.ymlは手動でshared/configに置く 設定 Gemfile 以下のgemをdevelopment環境にてインストールします。 unicornに関してはgemを使用せずに、自分でRakeタスクを作成します(後述)。 group :development do gem 'capistrano' gem 'capistrano-ra
最近仕事でRailsのコードレビューをする時間が長くって、いろいろ指摘するんですが、 Railsって「Railsチュートリアル」には書いていないのに覚えないと仕事にならないこと多すぎだなと気付かされます。 どこでどんなふうにすれば、プロになろうとしている人が最短距離で知識を獲得できるかはわからないですが、 今思っている特に大事だなと思うことつらつらと書いていきます。 😀 プログラミングの重要な要素まず、Railsの前にプログラミングで全般的に特に重要と思っている要素を紹介します。 - リーダブルなコード - ネーミングルールについて - 言語・フレームワークのルール - 変数のスコープについて - プロジェクトの設計思想 - オブジェクト指向・コードの再利用性 - 正しいテストケースを作る プロジェクトによって変わるので、すべては書きませんが、ぜひ意識してどこを学ぶべきかを考えてみてくだ
Railsでサインアップやログインを実装する時どうしてますか? だいたいどのアプリ書くときも必要になってくるので、結構つまらない作業だったりする。 個人的には自分でつくるのが好みですが、plataformatec/devise 使ってる人が圧倒的に多い印象。 Deviceていろんな機能がある、けど、結構使わない。 のでもっとシンプルなGemを試してみました。 NoamB/sorcery 今回は、下記の機能を実装します。 サインアップ ログイン( + ログインを記憶する) パスワードリセット ログインに失敗しすぎたらアカウントロック だいたいこんなもんなんだよね。欲しいのは。 あとはSNS認証とかかな。 インストール
続きを書きました。 少し前にakrさんからもらったパッチで知った Shellwords というモジュールが便利だったので紹介します。 Rubyスクリプトからシェルにコマンドを投げ込むときに必要なことを代わりにやってくれるいいやつです。 module Shellwords (Ruby 2.2.0) インストール 標準添付なのでrequireすればすぐに使えます。 require 'shellwords' 問題 コマンドから引数を受け取ってlsするスクリプトを考えてみます。 require 'shellwords' system("ls #{ARGV[0]}") だいたいのケースはこれでいいのですが、引数に空白入りのファイルが渡されたときなどに問題が起きます。 $ ruby ls.rb "foo bar.txt" # foo\ bar.txt でも同様 ls: bar.txt: No such
Add Features Instantly Rapidly develop a web application online with Prelang. Take the guesswork out of starting a Rails project by using Prelang to kickstart your web app. Add dozens of features to your codebase such as user login, UI frameworks, analytics, and more with the click of a button. Getting a head start on your project has never been easier or faster. Model Your Data Visually Configure
Railsで中規模なサイトを作っていく上で 避けて通れないのが、増えてきたモデルを適切にキャッシュするしくみのように思えます。 特に変更が少ないマスタ的なテーブルに対して、『多対多』で関連付け(アソシエーション: association)がある場合などは、 それなりのSQLの発行コストになることがあります。そこを適切にキャッシュすることでDBへの負荷が減り、 ユーザーへのレスポンスが改善されると思います。 今回は、最近実装しているキャッシュの方法について、紹介したいと思います。 (というか偉い人、ぜひいい方法教えてください><) 🍣 前提条件: RailsからRedisにキャッシュ今回は前提条件として、Railsのアプリケーションから『redis-store/redis-rails - GitHub』 のGemを使って、Redisにキャッシュをされているとします。 セットアップ方法は『r
よくRailsプロジェクトを作るので、Railsプロジェクトを作った後に最初にやっておきたい設定をまとめました。 主に、開発を効率化させるためにやることをまとめてますので、ざざっと眺めて取り入れそうな知識があったら開発効率を上げれるかもしれません。 また、nanapiさんの次の記事もとても参考になります。Rails Templateでプロジェクト作成を楽にしよう 動作確認 mac os X 10 rails 4.2.0 目次 1. Railsプロジェクトの作成 2. Gitにプロジェクトを登録 3. 開発を効率化させるGemをがっつり導入 3.1. gemのインストール 3.2. jquery-turbolinksの設定 3.3. 開発を効率化する関連gemの設定 3.4. 保守性を上げる 3.5. 表示整形関連(ログなど見やすくなる) 3.6. テスト関連 4. 言語設定 5. タイムゾ
railsアプリが遅いって言われたので、久しぶりにrubyでisuconしてみました。 railsアプリでstackprofを使ったプロファイリング まず、自分がいつもやってる方法なのですが、config.ruにstackprofの設定を仕込みます。 stackprofはrackミドルウェアとして差し込めるようになっています。 下記設定はrailsだけでなく、sinatraでももちろん動きます。(これをいつも仕込んでおいてあります。) Gemfileにgem 'stackprof'を書いてconfig.ruに下記のように仕込んでいます。 is_stackprof = ENV['ENABLE_STACKPROF'].to_i.nonzero? stackprof_mode = (ENV['STACKPROF_MODE'] || :cpu).to_sym stackprof_interval
技術情報共有サイト『Qiita』は、日本で働くプログラマーにとっていまや、なくてはならない存在となっている。また、チーム内の情報共有に『Qiita:Team』を利用しているという声を聞く機会は多い。こうしたプロダクトを通じて、「ソフトウエア開発をよりよくすることで世界の進化を加速させる」ことを目指しているのがIncrementsだ。 情報感度の高いプログラマーに向けたプロダクトの作り手は、おそらく情報感度が高いはずである。『Qiita』の「中の人」は今、どのような技術に注目し、どうやってそれを身につけているのか。 同社CTOの高橋侑久氏に、現在注目し、インプットしている技術領域と、学びのソースについて聞いた。 高橋氏は、注目している技術領域として次の3つを挙げた。 【1】Railsの課題に回答をもたらすElixirとPhonenix Framework 【2】Terraformでインフラを
こんにちは。 @srockstyleです。 Rails書いてます。Rails6で好きな機能はActionTextです。 以前フリーランスエンジニアの友人と話していて 「Rails周りを扱いながら業務に投入するには知識多すぎて、コードだけ書いていたひとたちや初級から中級になるひとにはしんどいかもなあ」 という話題が上がったので、僕が業務でRailsを使っていて日常的に使うけど見落とされがちな知見をまとめてみます。 業務でRails使っている人、なにか追加で必要なものなどあればコメントしていただけると助かります。 1. bash,zshなどのシェルを使ったUNIXコマンドライン Railsをやるときにも必要になりそうですが、ターミナル上で必要とされる知見です。サーバに入ればGUIが設定してあるサーバなんて滅多にないので、そこで作業するには必須のスキルになります。 ディレクトリを作る / mkd
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く