webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

rails

ヘルパーが太ってきたらデコレータでダイエット

画面へ表示するためだけのメソッドは、モデルには書かずに、ヘルパーに書く。というのはみなさんご存知のはずです。 ただ、そうすると今度はヘルパーが太ってくる。 最初はそこまで多くならないだろうと、一つのファイルに集めていたヘルパーメソッドたちが…

inverse_ofってどういうときに使うの?

Rails Guide の説明では 「inverse_ofオプションを提供していて、これを使うと双方向の関連付けを明示的に宣言することができます。」 とありますが、正直言ってることがよく分からんという方、そして自分へのメモです。 例えば、次のようなモデルのとき (…

RailsでCSVインポート機能を実装する

こんにちは、さもです。 CSVをアップロードしてデータの一括投入機能はよくあると思いますが、最も基本的な実装をメモしておきます。 イメージはこんな感じです。 インポートにはactiverecord-importを使ってバルクインサートしています。

レコード数が多いテーブルの一覧はselectしておこう

こんにちは、さもです タイトルの通りですが、レコード数が多いテーブルを一覧表示するような場合、しかも一部のカラムしか使わないときは、allではなく、selectを使った方が速かったです。例外もありました。 今、名前、メールアドレス、id、登録日時、更新…

Rubyでフォルダ内のファイルをpost送信する

こんにちは、さもです。 動画投稿webサービス作ったはいいけど、手元のファイルすべてをポチポチと画面からアップロードするのめんどくさいな ってときありますよね。 先日こういうのを作ったので必要になりました。 www.uosansatox.biz そんな要望にお答え…

Lineにアップロードした画像をクラウドへ保存するBot作った

こんにちは、エンジニアのさもです。 タイトルにもありますが、Line(グループ)に投稿した画像をクラウド(S3)で保存し、webページで一覧を見れるようにするBot(とwebサービス)を作りました。 普段Lineで画像のやり取りをしているという方は試してみてはど…

CarrierWaveでS3へアップロードした動画をhtmlで再生する

こんにちは、エンジニアのさもです。 Railsで動画をS3へアップロードするところまでは出来たのですが、video_tagで再生できずにはまってしまいました。 いろいろ検索してもどんぴしゃな解決法が出なかったのですが、なんとか再生することが出来たので共有し…

今日学んだこと。日時の比較やalias_methodなど

こんにちは、エンジニアのさもです。 今回は今日学んだことを忘れないようにするためのメモです。 [Ruby]文字列と日時の比較 [Ruby]alias_method [CSS] inherit [Jquery]eq(position)

これまで作った画像処理プログラムをwebサービスにしてみました。

こんにちは、エンジニアのさもです。 これまでプログラムを公開してきた「python画像処理シリーズ」を全部では無いですが、webから使えるようにしてみました。 画像変換の実験室 herokuの無料版で動かしているので、アクセスが多くなるとすぐに重くなるかも…

herokuでbundle installが実行されない

こんにちは エンジニアのさもです。 herokuにdeployしたとき、なぜかbundle installが実行されていないようだったので、メモです。 (よくある原因のひとつに、開発環境でbundle installしていなかったというがありますが、今回はこれが原因ではありませんで…

Rubyでどう書く?配列からターゲットの周囲5件を抜き出す

こんにちは、エンジニアのさもです。 仕事で次のような要件のメソッドを実装しました。 配列[1,2,3,4,5,6,7,8,9]がある。 この配列から、指定した数字(実際は検索結果の配列に対して、一つのオブジェクトを指定)を含む周囲5件を抜き出した配列を作る (具…

Rails入門者のためのQA~例外処理~

こんにちは、エンジニアのさもです。 2回目にしていきなり例外処理です。しかもQAじゃないです(笑) 入門したては、ガンガン機能を追加していき、サイトを作りこんで行きたいかと思うのですが、少し立ち止まって、例外処理について学んで下さい。 一度書く…

Rails入門者のためのQA~勉強方法~

こんにちは、エンジニアのさもです。 今回からちょっとずつ連載みたいな感じでRailsに入門されて間もない方のための記事を書いていこうと思います。 内容としては、一から全て説明するのではなくて、QA方式でつまずきそうなところを書いていきます。

【Rails】画像アップロードでたまーに落ちるバグに注意!

こんにちは、エンジニアのさもです。 CarrierWaveを使った画像アップロードが実装済みの画面を改修(追加で画像をアップロードできるようにする修正)しているときに、なぜかたまに参照している画像が存在しないという旨のエラーで落ちていました。 自分のう…

もう何回も妄想した「働く必要が無くなった」を実現された方がおる

こんにちは、エンジニアのさもです。 今回は少し長めの呟きです。 はてなブックマークを眺めていると、「一発当ててもう働く必要が無くなった」という衝撃の記事が飛び込んできました。

現在地の標高を教えてくれるLineBot作った

LineBot作成の入門記事です。APIを利用して、送られてきた位置情報を元にその場所の標高を返すBotを作ります。

名言を返してくれるLINE Botを作ってみた

こんにちは、エンジニアのさもです。 何かwebサービスに組み込んで遊べそうなAPIないかな~と調べていたところ、メッセージアプリLINEのMessage APIなるものを発見しました。 チュートリアルを進めると簡単にオウム返しBot(送った文章がそのまま帰ってくる)…

【Rails】deviseを使うときのログインのテストの書き方

お久しぶりです エンジニアのさもです。 今回はRailsアプリ内で認証にDeviseというgemを使うwebサービスでログインのテストの書き方をメモしておきます。

国選択を簡単に実装するgem(country_select)の紹介

国名選択が簡単に実装できるcountry_selectというgemの紹介です。webサービスを多言語化する際に使用しました。

時刻の差を○日 ○時間○分○秒みたいに出力する

こんにちは、エンジニアのさもです。 今回はrubyの小ネタです。 仕事で日時データの差を○日 ○時間○分○秒みたいに出力するプログラムを書いたのでメモです。

私がRubyを好きな理由、10個ぐらい正座してちゃんと言えるから

約2年Rubyを触ってみて、Rubyの好きなところを書いていきます。

Railsのstrftimeの引数を調べた(スクレイピングで)

こんにちは、エンジニアのさもです。 Railsのstrftimeメソッドってめっちゃ便利ですよね。 webアプリを作っていると日時っていろんなフォーマットで表示する必要があるので、よく使っています。 今回、英語圏の方用にフォーマットを作っていたのですが、pm、…

Mysql2::Error: Unknown tableといわれたら

こんにちは、エンジニアのさもです Railsをやっていると、マイグレーションを書いて、しょっちゅうDBを編集したり、テーブル追加したりしますよね。 Railsでは、 rake db:rollback とすると、今実行されたマイグレーションの中で最新のものを巻き戻してくれ…

railsでフォームに複数のサブミットボタンをつける

1つのフォームに複数のボタンをつける実装方法を紹介します。

railsでファイルをzip形式にまとめてダウンロードする

railsのgem,rubyzipを使ってnzipファイルの作り方・ダウンロードの方法を紹介します。

Railsアプリを多言語対応するまで

こんにちは、エンジニアのさもです。 Railsアプリを多言語(今回は英語対応)する仕事をやったので、一連の手順をメモしておきます。

Deviseを使うときに、初回ログイン日時を登録する方法

こんにちは、エンジニアのさもです。 仕事で「初回ログイン日時を登録できるようにして」と言われたときにやったことのメモです。

1対1のアソシエーションでエラーが出る

railsで1対1の関係があるモデルを作ったときに、よく分からないエラーではまったのでメモです。 以下のようなモデルを想定します。 class User < ActiveRecord::Base has_one :bank_information accepts_nested_attributes_for :bank_information, allow_des…

railsで開発するときにブックマークしておきたいサイト・ブログ7選

railsで開発していると、よく使うメソッドなのにすぐ使い方を忘れてしまう。というのがよく起こります。そんなときにいつもお世話になっているサイトやブログを紹介したいと思います。

ActiveRecord::RecordNotSaved: Failed to save the new associated ~ と言われたとき

Railsアプリで、1対1の関係にあるモデルを実装したときに少しはまったのでメモ。 例えば以下のようなモデルがあるとします。 class CarManager has_one :car accepts_nested_attributes_for :car, reject_if: :all_blank, allow_destroy: true end class C…