アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

Rails

Webど素人のSierがWebエンジニアになんとかなれた話

Webエンジニアのnakamuraです。 今回はタイトルにもあります通りWebのことなんてHTMLぐらいしかしらなかったメーカー系のSierだった僕がどのような経緯でWebエンジニアになったかを紹介したいと思います。 これから、Webエンジニアになりたいと思っている人…

メディア素人のWebディレクターがお出かけメディアを3年やって思ったこと3つ

メディア素人の元ECサイトWebディレクターが、お出かけメディアを3年やって思ったことを3つの切り口でまとめました。「SEO効果でオーガニック流入が増えてるまで何ヶ月かかる?」「表示スピードがどのぐらい数字にインパクトを与える?」「Webメディアの貢献…

ActiveRecord::Base#reload はインスタンス変数をクリアしない

komatsu(@nomnel)です。 小ネタですがタイトルの事象でハマってしまったので記事にします。

AWS CodeBuild 入門

morishitaです。 今回は利用しているAWSのサービスの中でも特にお気に入りの CodeBuildについて書きたいと思います。 CodeBuildとは CodeBuild とはAWSのサービスの1つで、完全マネージド型のビルドサービスです。 ビルドサービスだからといって、プログラ…

HTTP/HTTPS判定をnginx側で判定するようにしました

こんにちは、endoです。 いこーよのHTTP/HTTPS判定をアプリケーション側から、nginxで行うようにしました。 rails5へのアップデート作業の途中経過報告に書いていたことを実現しました。 理由としては、下記の通りです。 アプリケーション側で行うより、ALB/…

rails5へのアップデート作業の途中経過報告

こんにちは、endoです。 アドベントカレンダー2日目の記事です。 現在、rails5へのアップデート作業をしており、その途中経過報告です。 1 rails4系の最新版にする 2 rails5を動かす →gemをrails5対応するものにあげる 3 rails4で変更できるDeprecationコー…

Railsのログを awslogs で Cloudwatch Logs に出力する

morishita です。 今回はいこレポでのログ出力について紹介します。 いこレポの動作環境 いこレポは ElasticBeanstalk を利用してアプリケーションサーバを稼働させています。 ElasticBeanstalk ではプラットフォームを選択できますが、 Multi Container Doc…

DelayedJobのバックグランド処理でサーバーが落ちた時にすること

こんにちは、endoです。 今回はDelayedJob先生のバックグラウンドの処理が重くて、スワップが発生してサーバーがお亡くなりになりました。 対処として、サーバー再起動を行いました。 この時、サーバー再起動で処理は繰り返されないだろうと勘違いしていまし…

ActiveRecord::enum を拡張する gem を作りました

kawaguchiです。 iko-yo.net で使われている module を別プロジェクトで使いたくなったので gem にしました。 https://github.com/jiikko/active_record-enum_with_label class User < ActiveRecord::Base include ActiveRecord::EnumWithLabel enum_with_la…

iko-yo.net を rails4.2 にアップグレードしました

kawaguchiです。 先日、iko-yo.net の rails を 4.1 から 4.2 へアップグレードしました。 大きなアップグレードといえば、 変更行数が多くなるので github.com のプルリクではすべての差分が表示できなくなったり、 コードレビューに時間がかかり開発者にス…

act-fluent-logger-rails の Rails5 対応をリリース

こんにちは、tahara です。 act-fluent-logger-rails の Rails5 対応をリリースしました。 https://rubygems.org/gems/act-fluent-logger-rails/versions/0.3.0

Paperclip を使っている Rails アプリのテスト高速化

こんにちは、tahara です。 テストでも Paperclip を使っているモデルを FactoryGirl.create(:facility) とかすると、 ImageMagick の convert コマンドなどが走ってしまいます。 これがなかなか重くてテストを遅くしちゃっています。 そこで Paperclip のサ…

delivery_method を smtp にしたら 2.5 倍速くなった

こんにちは、tahara です。 Rails で config.action_mailer.delivery_method を :sendmail から :smtp にかえたら、44 分かかっていたメール送信バッチが 17 分で完了するようになりました。 ( ^-^)/:★*☆オメデト♪ なのでみなさん :smpt にしましょう! とい…

before_destory の prepend 指定について

ユーザーがブログを書けるアプリケーションとかで、ユーザーが退会したら、関連するブログを削除する指定をすることは良くあると思います。 以下のような設定です。 class User < ActiveRecord::Base has_many :blogs, dependent: :destroy end class Blog <…

Delayed::Job で絶対にやっておいた方がいいたった1つの設定

こんにちは、tahara です。 アクトインディ Advent Calendar 2015 の25日目の記事です。 これです。 Delayed::Worker.max_attempts = 0 Delayed::Job は実行に失敗した場合、デフォルトで25回リトライします。 気のきいた機能なのですが、メール一斉送信を D…

Common Lisp コードの方が多い gem

こんにちは、tahara です。 アクトインディ Advent Calendar 2015 の8日目の記事です。 Common Lisp コードの方が多い gem をリリースしました。 前回はたった2行でしたが、今回は200行以上あります。 ちなみに Ruby のコードは40行くらいです。 lisp-rails-…

guard-notifier-stumpwm

こんにちは、tahara です。 アクトインディ Advent Calendar 2015 の4日目の記事です。 ふだんいこーよを開発しているとき bundle exec guard ってやってます。 むかしは script/autospec でしたよね。 その当時は autotest-stumpwm でした。 このたび Gurad…

Unicorn と Nginx と Rails の関係

皆さん。初めまして。最近アクトインディに入社した namikata です。 エンジニア職未経験 30歳を超えている といったプロフィールを持っていますが、チャレンジするのに年齢は関係ありませんの精神で、これから頑張ってエンジニアライフを送っていきたいと思…

RSpec での悲観ロックのテスト

こんにちは、tahara です。 コードに account とか withdraw とか出てきたら悲観ロック(select for update)が必要ですね。 そのテストをするには次のものが必要になるかと思います。 コミットが機能する 複数スレッドがそれぞれ別々のコネクションでトラン…

requests spec を書こう

こんにちは、tahara です。 ちかごろ Rails のテストは requests spec がいいな、と思ってます。 メリットは リクエストの view → controller → model → レスポンスの view と、ひととおりでテストできる。 実運用にそくしたエンドツーエンドテストがあると…

拡張子なし、application/octet-stream のアップロード

こんにちは、tahara です。 Android からのファイルアップロードはエントロピーの神々に支配されているのでしょうか? 拡張子なし、Content-Type: application/octet-stream で jpeg ファイルが ブラウザから POST されたりします。 そんな POST に対応する…

バウンスメール処理

こんにちは、tahara です。 Rails システムでのバウンスメール処理ってどうするのがいいんでしょう? ベステプラクティスではないかもしれませんが、弊社でのバウンスメール処理方法を書いてみたいと思います。 まずメーラークラスで return_path にバウンス…

Rails で LaTeX を使って帳票出力

こんにちは、tahara です。 システム開発で、もう15年くらい前からやってみたいことがありました。 Web アプリでの帳票出力に LaTeX を使うことです。 社内システムながらようやくその機会に恵まれました。 rails-latex といういい gem があり、めんどうなと…

Active Record で null でない、かつ空文字でない

こんなふうに書けるんですね。 [1] pry(main)> Experience.where.not(content: [nil, '']).to_sql => "SELECT `experiences`.* FROM `experiences` WHERE (NOT ((`experiences`.`content` = '' OR `experiences`.`content` IS NULL)))"

Rails で is null と is not null

こんにちは、tahara です。 Rails で is null と is not null ってどうやって書くの? is null Foo.where(bar: nil) is not null Foo.where.not(bar: nil) http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods/WhereChain.html#method-i-not ちゃ…

assets:precompile が遅い

こんにちは、tahara です。 ようやく いこーよ も エンパ においつき Rails4 になりました! おいつかれたエンパ担当者は、「エンパはRails6くらいにしたい」などのたまっていましたが、 その時はエイリアンテクノロジーでつきはなしたいと思っています。 さ…

Rails ログを MongoDB と S3 につっこむ

こんにちは、tahara です。 そろそろデータマイニングなんか初めてみたいな、と思っている今日このごろです。 その前段階として、Fluentd を使って Rails のログを MongoDB と S3 に格納するようにしてみました。 で、そのために act-fluent-logger-rails を…

Rails アプリの JavaScript エラーの通知

こんにちは、tahara です。 Rails のエラー通知に Exception Notifier を使われてたりすると思いますが、 JavaScript のエラー通知はみなさんどうされているのでしょうか? ちょっと探してみたのですが、これだ! というもの見つからず、 PipelineDeals Dev Bl…

Asset Pipeline と Amazon CloudFront を導入

こんにちは、tahara です。 いまだに Asset Pipeline を使っていなかったいこーよですが、Amazon CloudFront とともに、ようやく導入しました。 温泉街の旅館のごとくページを増やしていたため、複数のレイアウトファイルが乱立しており、かなり大変な目にあ…

Rails のログを寡黙に

こんにちは、tahara です。 Rails のプロダクションログですが Started GET "/" for 127.0.0.1 at 2011-12-11 13:32:11 +0900 Processing by TopController#index as HTML Rendered shared/_login_box.html.erb (1.2ms) Rendered top/_header.html.erb (2.3m…