Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
背景 RailsでCSVを返す時、10万データくらいのものを普通に処理するとメモリを食い潰したり、処理が遅かったりする。 そこで解決策を探していたら、RustでRailsの代わりにCSVを作るという素晴らしい記事に出会った。 この記事はPostgresやNginxを使ってたが、私はMySQLを使っており、Railsのアプリケーション内で完結したかったので、参考にしながら試験的に作って見た。 お断り Railsをすでに理解していることを前提に進めます。 初心者の方へ環境構築周りを最後の方におまけとして書いておきますので参考にしてください。 筆者はRust初心者ですのでアドバイスを頂けるととても助かります。 環境 Ruby 2.3.3 Rust 1.14.0 Rails 5.0.1 Gemfileは基本デフォルト source 'https://rubygems.org' git_source
あるシステムから届くメール通知が不親切なので「メールを受信して、DB保存しそれを整形して表示させるサイト」をHeroku上で作成してました。その実装の中で、応用のききそうなメール受信とWebサイトのPush通知の方法についてメモしておきます。 使ったもの Heroku Mail2Webhook Pusher メール連携 heroku上にデプロイするので良いのが無いかAddonを探したところ無料プランでもそこそこ使えそうなMail2Webhookに決定。 設定 1.Addonの追加 $ heroku addons:add mail2webhook これだけで受信用メールアドレスが発行される。Configで確認する事も可能。このメールアドレスが長く、小文字Lとか数字1が混在しているので注意(これでハマった) $ heroku config:get MAIL2WEBHOOK_EMAIL 2.We
Rails5.1が今betaで出ていますね。中でも目玉はwebpacker.gemによるモダンなフロントエンド開発がRailsに導入されることでしょう。 今までのRailsのasset pipelineとは別に、yarnによって依存性を管理しwebpackで結合する独立したjsのビルドシステムがサポートされます。 これによって、以下のような従来のasset pipelineでは解決がむずかしかった問題への解が示されました。 coffee scriptへの依存 npmによる依存性、バージョン管理が難しい javascriptのライブラリが野良gem化されてupdateされない問題 webpacker.gemはyarn/webpackの薄いwrapperとなっていて、加えて幾つかのrakeタスクを追加することでフロントエンド開発をサポートします。 具体的には以下のような機能が提供されます。 y
├── Gemfile # `gem "itamae"` ├── Gemfile.lock ├── README.md ├── Vagrantfile ├── cookbooks # ここにレシピを置く 命名、分け方自由 │ ├── dir_set # Rails pjt を置くディレクトリを用意 / 権限設定 など │ ├── etc_packages # 基本的なpackage群をinstall │ ├── iptables │ ├── mysql │ ├── nginx │ ├── ntp │ ├── redis │ ├── security │ ├── time_set # 日本時間にする設定 │ ├── unicorn │ ├── yum │ └── zabbix ├── node │ └── rails # ここで設定したもの
database_cleanerの設定(transactionが使える場合) 背景 database_cleanerでテスト前後のDBの消去をしています。 database_cleanerには消去の方法として以下の2つがあります - truncation - transaction transactionはtruncationに比べ、DBに制約はあるものの、 truncateするのではなくtransactionをrollbackするだけなので早いです。 詳しくは公式のページを見てください。 https://github.com/bmabey/database_cleaner 自分の対象とするシステムはmysqlを使っているので、 transactionが使えました。 実際の設定方法 Guard+spork+rspecでまわしている場合、 Spork.preforkの中に以下のように追記すれ
実はデフォルトのメソッドではなかったりします。 where.(id: 100).first_or_createとかはあるんですけどね。。 きっとRails5が出る頃には実装されているのでしょう。 これがあるとバッチで請求情報とか作る時にいいですよね! 請求情報なんて様々な事情で何度も作り直しすることもありますし(白目) cutoff_date = Time.now.end_of_month User.all.each do |user| invoice = Invoice.find_or_initialize_by( user_id: user.id, cutoff_date: cutoff_date.strftime('%Y-%m-%d'), ) invoice.user_id = user.id invoice.price = 10000 invoice.cutoff_date = c
はじめに この記事はByebug(バイバグ)というgemを使ったデバッグ方法を説明するチュートリアル記事です。 JavaやC#のようなコンパイル型の言語ではEclipseやVisual StudioのようなIDEを使って開発することが主流です。 なので、自然とIDEに標準装備されているデバッガを使ってステップ実行したりすることが多いと思います。 一方、RubyではRubyMineのような有料IDEもあるものの、IDEではなくテキストエディタを使って開発している人の方がまだまだ多いと思います。 そうすると、初心者の方はなんとなく「Rubyでデバッガを使ってデバッグするのは無理なのでは?」と考えてしまう人も多いかもしれません。(僕は初心者の頃そう思ってました・・・。) ですが、そんなことはありません! RubyでもIDEを使わずにターミナル上でデバッガを使ってデバッグすることは可能です。 とい
Circle CI でも travis-ci でもなんでもいいんですが、とにかくデプロイ用に用意する assets:precompile を早くしたいというあなたむけの記事です。 bin/rake assets:precompile は public/assets 以下に配信用の assets を吐き出し、 manifest.json なども配置されますが、この public/assets ディレクトリをキャッシュするだけでは、次回の bin/rake assets:precompile は早く__なりません__。 継続的な bin/rake assets:precompile の実行を高速化するには public/assets だけでなく、 tmp/cache/assets も保存しておき、 assets:precompile 実行前に再配置しておく必要があります。 これにドはまりすると
先日、Ruby開発者のためのHeroku入門というWebセミナーを行いました。この時の内容の振り返りとしての、注意事項の補足説明です。 元のスライドはRuby開発者のためのHeroku入門を御覧ください デプロイ前の注意事項 デプロイする前、アプリケーションを開発する時に考慮しておくべき事項 5つを紹介します 1. データベースサーバの選定について Heroku では、RDBMS は Heroku Postgresを、高速なKVSの場合には Heroku Redisを推奨することが一般的です。純粋に、Herokuが提供しているアドオンだからということと、Heroku Postgresに限っては、常に最新版を利用することができることも、推奨するポイントです。 もちろん、MySQL や Mongo、Cassandraなど、3rd Vendorの提供するデータベースを利用することも可能ですが、H
な、なるほど...!? いや、みんなちょっと誤解してるんじゃないか? よーし、お父さん、みんながSTIを使いたくなるようにちょっと頑張っちゃうぞ! STIとは STIは、単一の継承階層に所属するクラス群を、ただひとつのテーブルを使って永続化する手法です。 PofEAA Railsのドキュメントを漁ると、次のような記述が見つかります。 http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html Note, all the attributes for all the cases are kept in the same table. Read more: www.martinfowler.com/eaaCatalog/singleTableInheritance.html このリンク先は、リファクタリングで有名なMarti
はじめに DHHがRails5.1にwebpackを取り入れる意向を示し、その実装としてwebpacker gemを提案しました。 まだ最低限の方針が示されただけで機能は全然足りてませんが(コミットチャンスですよ!!)、どんな実装になっているか軽く見てみました。 リポジトリ, PR webpacker gem: https://github.com/rails/webpacker PR to Rails: Basic --webpack delegation to new webpacker gem 内容 注: あくまで2017/1/18現在の話で、これから多くの変更が入ることになります webpackのラッパーになっている webpackを用いたJSアプリの素地を作ってくれる webpackのコマンドをrakeコマンドでラップしている rake越しにやりたくない人は、webpackを直に
productionで運用するときに注意すべきこと。 application.cssとapplication.jsの動作 アプリケーションで利用するcssとjsをassets:precompileで一つのファイルにまとめてます。その上でlayout/application.html.hamlでincludeして、アプリケーションで利用します。 cssとjsの設計に注意 デザイナーさんが画面ごとにCSSやJSを別ファイルにして、名前空間が被ってしまうとapplication.cssやapplication.jsにまとめることができません。そうすると、compileの対象ファイルとならずにproductionだと404になってしまいます。 config.assets.precompileに記述 compileの対象とするために、config.assets.precompileに記述をします。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く