約束の地

あの日あの時のキャロの想い出

Ruby

Kuroko2 のインストールで少しハマった

Kuroko2 Cookpad製のジョブ管理システムです。 ドキュメントは以下から。

Rails (というか Active Record) のマイグレーションで複合外部キーを設定する方法

結論 生SQLを書くしかなさそう。

Rails のマイグレーション時に references メソッドの対象テーブルがない場合は失敗する

Rails のマイグレーションで失敗する 標題でほぼ言い尽くされているし、何をお前は当たり前のことを言っているんだ状態だとは思いますが記録として残しておきます。

Ruby で UTC の日時を取得する方法(Rails 不要、gem 不要)

動機 検索するとRailsしか引っかからなくて1時間くらいハマったため、書き残します。追加で何かを入れる必要はありません(Rubyのバージョンは2.4.1)。 結論 Time.now.gmtime 実例 puts Time.now.gmtime #=> 2017-07-07 07:45:38 UTC

Rails の production モード起動時に app/ 配下に余計なコード(ファイル)を入れているとハマる

production モード起動時 標題のとおりですが、productionモード起動時にapp/配下(サブディレクトリも)のファイルが根こそぎ*1読まれてしまうので、書き捨てのコードが残っていたりすると*2うまく起動しないか、起動したように見えても問題があります。dev…

OpenCV (ruby-opencv) を用いて「ある画像が画像のどこに埋め込まれているか」を調べる(「坊ちゃんを探せ!」)

動機 「坊ちゃんを探せ!」と、あとまさんがツイートをしたので探してみようと思いました。 坊ちゃんを探せ!#坊ちゃんの日 pic.twitter.com/2yHVQmDDuR— あとま@1169会お疲れ様でした (@1atoma) 2016年11月10日

Twitter の gem において RT の Favorite 数は取得できない(が、何とかして取得する方法)

RT の Favorite 数 gem を用いた場合に限った話ではなく API そのものの制限だとは思うのですが、念のためこのような標題にします。 結論 API でリツイートを取得した場合は、元のツイートの Fav 数は取得できない ということです(正確には 0 が返ってくる…

Active Record でそれぞれのレコード(行)から特定のカラムの値を取得する方法

結論 attributesメソッドを用いる。

Twitter の gem を用いて、リツイートした人の一覧と、リツイートのツイートオブジェクトを取得する方法

前提 retweeters_idsメソッド、あるいはretweeters_ofメソッドを用いる場合は自分のツイートでなければ取得できません。 なのでこれらのメソッドは用いないで、最後に書くようにretweetsメソッドを用いるべきです。すなわち、この記事の途中の大半はスルーし…

mysql2 の gem で INSERT しようとしたらドハマリした

Ruby で MySQL への INSERT 原因の根幹はRuby限定ではないでしょうが、Rubyの書き方に起因するものとしてこのようなタイトルにしました。要はMySQLにINSERTできないというただそれだけのハマりです。2017年にこんなレガシーな方法で、とは思いますが、一つの…

Rails 製の ECサイト フレームワークである Solidus のインストール方法

Solidus これです。Spreeの後継ですね。 インストール方法 できるだけ最小限に、できるだけ全ての環境に当てはまるようにインストール方法を書いていきます。基本的には公式の説明のとおりですので、そちらを一緒に見ながら進めるとよいと思います。

Twitter の gem で 140 文字制限の拡張により正しくツイート情報が取得できない場合

正しいツイート情報が得られない Twitter の仕様変更により、gem で正しいツイート情報が得られないことがあります。

CSV.table では日本語のヘッダは表示されない

Ruby の CSV.table メソッド Ruby で CSV を扱う際に、CSV.table メソッドは便利です。 しかし…… しかしながら、一つだけ*1注意点があります。それは、「日本語のヘッダは表示されない*2」ということです*3。 *1:じゃないかもしれませんが *2:文字列を取得で…

Twitter の gem を利用して ユーザID でユーザを指定する方法

Twitter の gem を使う 標題のとおりなのですが、ドハマリです。 スクリーンネームを使って でユーザオブジェクトを得る方法 スクリーンネーム(@foobar でいう foobar の部分)を用いてユーザオブジェクトを用いるためには、ベタ書きで以下のようになります…

Twitter の gem を利用して ツイートID でツイートを指定する方法

Twitter の gem を使う 標題のとおりなのですが、またもやドハマリしました。 ツイートID でツイートオブジェクトを得る方法 いわゆるツイートIDでツイートオブジェクトを得るのは簡単です。https://twitter.com/foobarfoobar/status/123456789012345678の U…

Ruby で UTC(文字列)を JST にとにかくさっさと変換する方法

結論 in_time_zone('Tokyo')メソッド(引数)を用いる。 具体例 utc_datetime = '2017-06-16 05:20:35 UTC' jst_datetime = utc_datetime.in_time_zone('Tokyo') puts jst_datetime #=> '2017-06-16 14:20:35 +0900'

twitter gem を用いて鍵アカを判別する方法

結論(概略) 以下のページに全て書いてありますのでぜひご覧ください(大感謝)。

Rails を内蔵サーバの production モードで起動した際に public/ 配下のファイルが読み込まれないとき

結論 config/environments/production.rb内のconfig.public_file_server.enabledをtrueにする。

Rails で config/secrets.yml に書いた値(「キー」に対応する「値」)を呼び出す方法

結論 Rails.application.secrets.キーの名前

Rails 5 で自作のモジュールを読み込む方法

Rails 5 で自分で作ったモジュールを使いたい 独自のロジックを用いる場合など、Rails 5で自前のモジュールを使いたい場合があると思います。その場合、どのようにしたらいいかというお話です。

Rails で Bootstrap を用いた際に dropdown が効かなくなる場合の対処方法

Rails で Bootstrap を使う RailsでBootstrapを用いてdropdownを実現します。最初にアクセスしたページでは正しくドロップダウンメニューが表示されますが、リンク先が自分自身(例えばa href="#")になっていてそこに遷移した際、ドロップダウンメニューが…

Rails を production モードで起動した際に接続できない(500 エラー)場合の対処法

Rails を production モードで起動する developmentモードと同じようにして、Railsをproductionモードで下記のように起動します。内蔵サーバのPumaの起動です。 $ rails server -e production ここでエラーが出てしまった場合(そもそもサーバが正常に起動し…

Rails のコントローラで render text: を指定したらエラーが出る場合

render text:でエラーになる 自らの恥を晒し続けている当ブログですが……。 Railsのコントローラにて、コントローラから直接テキストを表示したい場合があるかと思います*1。その際に、以下の書き方だとTemplate is missing(Missing template)のエラーになり…

bundle で vendor/bundle に gem を入れたときの require の方法

vendor/bundle 以下のように、システムパスではなく任意のパスに gem 一式をインストールしたとします。 $ bundle install --path vendor/bundle これで例えばfoobarという gem が入った場合のrequireの方法です。 結論 require 'bundler/setup' require 'fo…

RSpec をインストールして初めてのテストを実行する

RSpec 当然ではあるんですが、RSpecについての記事はRails上での実行を前提とした記事が多いので、ただただ単体でRSpecを使うだけの方法を書いてみます。

Test::Unit でデータを投入してテストをする

Test::Unit Ruby の Test::Unit で具体的なデータを入れてテストをする方法です。いわゆるデータドリブンなテストってやつです。 解説ページ とはいえ、すでに素晴らしい記事があります。以下のページを読むとだいたい分かってしまいます。 Ruby用単体テスト…

Test::Unit で「正規表現に一致」するかどうかのアサート

Test::Unit RubyのテストフレームワークであるTest::Unitについてです*1。 *1:2.1.1 です

Ubuntu 16.04 LTS で pg の gem がインストールできない場合

結論 libpq-devを入れる。 $ sudo apt-get install libpq-dev インストールできないときの怒られ方 こんな風に赤い文字で怒られるかと思います。 An error occurred while installing pg ... 参考(というか答え)

Rails で静的コンテンツをそのまま表示する方法

環境 Railsは5.1.1 Rubyは2.4.1 Rails で静的コンテンツをそのまま表示する 既存のコンテンツを Rails でそのまままるっと表示したい(移植したい)場合があると思います*1。たとえば Bootstrap のサンプルファイルをそのまま使ったりだとか、過去の静的サイ…

Rails 5.1.1 で vendor/ 配下の画像ファイルが読み込まれないとき

環境 Railsは5.1.1 Rubyは2.4.1 vendor/配下の画像ファイルが読み込まれない 例えば、vendor/assets/images/cat.jpgというようにファイルが配置されていたとします。このとき、以下のようなerbを書いてcat.jpgを表示させようとするとAssetNotPrecompiledエラ…

Rails で assetsパス を確認する方法

assetsパス Rails で画像ファイルやJavaScriptファイル、CSSファイルは任意の場所に置いても認識されません。ではどの場所に置けば認識されるかというと、assetsパス の場所になります。 assetsパス の確認方法 以下のようにコンソールに入り、Rails.applica…

Rails で scss ファイルが読み込まれないとき

結論 同名の.cssファイルが存在していないか。していたら削除する。 悲しみ またこんなことで2時間近くハマってしまってとても悲しい……。 原因 ハマった原因はひとえにVisual Studio Codeのファイルツリーの中に.cssファイルが見えなかったからです*1。ふと…

Rails で Cannot render console from... と怒られたときの対処法

環境 Railsは5.1.1 Rubyは2.4.1 結論 config/application.rbにconfig.web_console.whitelisted_ips = '192.168.100.0/24'のように書き加える。 補足 1. 環境ごとに指定を変えたい場合 config/environments配下の3つの環境を示すファイルに上記の内容を書き加…

rails generate で固まる場合の対処方法

環境 Railsは5.1.1 Rubyは2.4.1 結論 Gemfileのspringとspring-watcher-listenをコメントアウトする*1。 # gem 'spring' # gem 'spring-watcher-listen', '~> 2.0.0' あるいは$ bin/spring stopで止める(こちらの方が楽)。 補足 固まったときにだけやれば…

rbenv の環境下で /bin 配下のコマンドが直接実行できないとき

結論 rbenv rehashを実行する。 $ rbenv rehash 理由 ここで私がダラダラ書くよりもこちらで的確にまとまっています(感謝)。 いちいち rehash するの面倒くさい rehashを省く方法はいくつかありますので各自検索をしてみてください*1。 *1:投げやり……

Rails で gem ファイルを更新した場合はサーバを再起動しないと適用されない

結論 標題の通り。 感想 あいかわらずこういうところでプチハマりをして悲しい。

bundle コマンド と bundler コマンドの違い

結論 無い。

rbenv を使って Ruby のバージョンを変えて Rails の環境を構築する方法(Ubuntu 16.04 LTS)

Rails で用いる Ruby のバージョンを手軽に変更する rbenv を用いて Ruby のバージョンを自由に変更して Rails の環境を構築する方法です*1。対象としているのは Ubuntu 16.04 LTS ですが、他の場合でもだいたい一緒だと思います。単にrbenvを導入するだけの…

Mastodon を Docker で起動する方法

Mastodon を Docker で起動する ご存知 Mastodon です。以下は Windows の Vagrant 上の Ubuntu 16.04 LTS での内容ですが、おそらくどの環境でも通じると思います。

Slim を単体で使う場合の方法

Slim を単体で Ruby 用のテンプレートエンジンである Slim は、一般には Rails 用のテンプレートとして用いられることが多いようですが、単体で Webページ の静的ジェネレーター(というと大げさかもしれませんが)として用いることができます。

mysql2 の gem を使って MySQL に接続する際に文字コードを utf8mb4_general_ci にする方法

MySQL へ格納できない Twitter のツイートを MySQL に記録しようとした際に Ruby で mysql2 を用いようとしたのですが、どうあがいてもエラーで止まることがあります。Incorrect string valueとか出てきますが、MySQL に収める前の生取得データはちゃんと取…

gem のインストール場所を調べる方法

これで。 # gem environment インストール場所だけでなく、他にもいろいろ出てきます。 RubyGems Environment: - RUBYGEMS VERSION: 2.5.1 - RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-linux-gnu] - INSTALLATION DIRECTORY: /var/lib/gems/…

Docker で Ubuntu に 日本語化した GitLab をインストールする

Ubuntu on Docker に 日本語化した GitLab を構築する 素の Ubuntu イメージに GitLab を入れていきます。ただ入れるのではなく、日本語化をします*1。 *1:迅速なパッチ対応に感謝!

Capybara の all メソッド(find_all メソッド)で正規表現を使うときの注意点

Capybara Ruby で Web スクレイピングをする際はCapybaraという選択をする場合が多いと思います。その際、Capybara の all メソッド(find_all メソッド)で正規表現を使って抽出をするときの注意点です。 オプションの引数として:textを用いるとき ドキュメ…

GitLab が 502 エラーで起動しないとき

GitLab が 502 エラーで起動しない GitLab をがんばってインストールして喜び勇んで起動してアクセスしても、延々と 502(Bad Gateway)エラーが出てログイン画面にたどり着けない場合があります。そのときの対応方法の一つです。 まずは待つ 単に起動準備中…

Ubuntu 16.04 LTS にて Passenger + Apache でサブディレクトリを用いて複数の Webアプリ を実行する方法

1. Passenger での Webアプリ 実行 Rails や Sinatra を Apache で起動する際、Apache を Webアプリ 専用にするのではなく、サブディレクトリで切って複数起動する場合の設定です。Passenger のインストールや、単独での Webアプリ の実行確認は済んでいるも…

Rails を production モードで起動した際にエラーが出る場合の対処方法

production モードでの起動 Rails では一般的に develop モードで開発を行っていると思います。これを production モードに変えて起動した場合には以下のような箇所を変更する必要があります*1。 以下、アプリのディレクトリを /var/www/myapp/ として説明し…

Ubuntu 16.04 LTS で Passenger + Apache を用いて Sinatraアプリ を公開する方法

0. 前提 Sinatra を Apache で動かしていきます。Passenger と Passenger の Apache モジュール自体のインストールは以下の過程を経て終わっているものとします。 # gem install passenger # passenger-install-apache2-module

Ubuntu 16.04 LTS で Passenger + Apache を用いて Railsアプリ を公開する方法

0. 前提 Ruby on Rails を Apache で動かしていきます。Passenger と Passenger の Apache モジュール自体のインストールは以下の過程を経て終わっているものとします。 # gem install passenger # passenger-install-apache2-module

eRuby (CGI)で POST する時に値を渡す方法

eRuby 2016年も終わろうとしているこのときに CGI な eRuby を使っている人がどれだけいるのかというとあやしいですが、とりあえず知見として。 eRuby(erb)を CGI で 下記のサイトなどの方法で、任意のファイルに Ruby スクリプト を埋め込んで Web に展開…

Powered by はてなブログ