Ruby
Railsを使っていると「日時バッチ」「1時間に一度の処理」など定期的に実行したいタスクが出てきます。 管理方法としては普通にcrontabに書き込んだりJenkinsなどを使ってそれらのタスクを管理する方法があります。 しかし可能ならRailsプロジェクト上で実行…
Nokogiriをインストール中に表題のエラーが出た時の対処法です。 メッセージは下の通りです。 current directory: /Users/xxxxxx/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/nokogiri-1.8.3/ext/nokogiri /Users/xxxxxx/.rbenv/versions/2.5.1/bin/rub…
rbenv install 2.5.1をした時に下エラーが発生しました。 環境はMacのHigh Sierraです。 BUILD FAILED (OS X 10.13.4 using ruby-build 20180424) Inspect or clean up the working tree at /var/folders/d3/wr7y5r3j0jn_y6q0p1524pnr0000gp/T/ruby-build.20…
Railsで、Daemonを動かすためのメモです。 今回はdaemon-spawnというgemを使いました。 github.com Bundlerでインストールします。 requireはdaemon_spawnにする必要があるので下のように書きます。 gem 'daemon-spawn', require: 'daemon_spawn' 使い方とし…
Ruby標準ライブラリのbenchmarkを使って処理速度を測定してみました。 使い方は下の通りです。 配列へのpushの10000回ループと100回ループを測定しています。 require 'benchmark' Benchmark.bm(10) do |x| x.report("10,000回") do arr = [] (0...10000).ea…
ParallelというGemで並列処理を試してみました。 github.com インストール インストールはBundlerを使いました。 source "https://rubygems.org" gem "parallel" 使い方 使い方は下の通りです。 1,2,3を引数にしたブロックを並列に実行してくれます。 requir…
Rubyを使ってCoincheckのAPIを叩いてみました。 取引所APIドキュメント | Coincheck(コインチェック) APIは、認証不要のpublic apiと認証が必要なprivate apiの2種類あります。 今回は板情報を取得するpublic apiを叩いてみようと思います。 Coincheckは公…
ビットコインなどの仮想通貨取引所のBitflyerのAPIを試してみました。 ビットコイン取引所【bitFlyer Lightning】 準備 APIを叩くため、まずはrest-clientをBundlerで追加します。 source "https://rubygems.org" gem "rest-client" 板情報の取得 /boardへの…
GoogleAnalyticsのデータの取り方を調べてみました。 取得準備 まずはGoogleCloudPlatformにアクセスしてプロジェクトを作成します。 Google Cloud Platform 続けて「IAM と管理」の「サービス アカウント」からサービスアカウントを作成します。 この時、js…
rspec-retryという、失敗したテストを再実行するGemを使ってみました。 GitHub - NoRedInk/rspec-retry: retry randomly failing rspec example まずはRailsのプロジェクトを作ってfeature specを書きます。 require 'rails_helper' feature 'test' do scena…
Rubyの配列にはzipというメソッドがあって、それを使うと2つの配列をつなげる事ができます。 [1, 2, 3].zip([2, 3, 4]) # → [[1, 2], [2, 3], [3, 4]] 引数の要素数が少ない場合、そこにはnilが入ります。 [1, 2, 3].zip([2, 3]) # → [[1, 2], [2, 3], [3, n…
RailsからAPIを叩くためにactive-rest-clientというGemを使ってみました。 使い勝手はActiveResourceに近いものでした。 github.com インストールはいつものようにBundlerを使います。 gem 'active_rest_client' データ取得/更新の為には、下記のようにModel…
MySQLを5.1 → 5.6にアップグレードしたのにRailsで表題のエラーが出た時の対処法です。 結果としてはmysql2をインストールし直せば解決しました。 5.1の時にbundle installしたので、その時のものが悪さをしていたようです。 gem uninstall mysql2 bundle in…
github.com いつものようにBundlerでインストールします。 gem 'acts-as-taggable-on' 以下のコマンドでDBのセットアップをします。 rake acts_as_taggable_on_engine:install:migrations rake db:migrate MySQLを使っている場合は更に以下コマンドを実行し…
■■■ 2021/08/18追記 AdSenseのAPIでAdMobデータで取得するのは非推奨になりました。 下URLを参考にAdMobのAPIへの移行をして下さい。 https://developers.google.com/admob/api/v1/migration ■■■ Admobのデータを取得する方法です。 まずはBundlerでgoogle-a…
GoogleのAPIを使う時に表題のエラーが出た時の対応です。 GoogleAPIの仕様が変わったため'google/apis/{サービス毎の名前}で呼び出す必要があります。 # require 'google/api_client' require 'google/apis/adsense_v1_4'
authenticate_or_request_with_http_basicメソッドを使うと実現できます。 class ApplicationController < ActionController::Base before_action do authenticate_or_request_with_http_basic do |user, password| user == "admin" && password == "passwor…
splitというA/Bテストが簡単にできるGemを試してみました。 github.com 初期設定 このGemではredisを使うのであらかじめインストールしておきます。 brew install redis redis-server /usr/local/etc/redis.conf Bundlerでsplitをインストールします。 gem '…
RailsからJavascriptに値を渡す方法です。 インストール インストールはbunlderを使います。 gem 'gon' 使い方 設定 htmlのheadタグの中で以下の呼び出しをします。 Gon::Base.render_data こうすると以下のようにレンダリングされます。 <script> //<![CDATA[ windo</script>…
rack-mini-profilerというGemを使うと、画面が表示されるまでの時間を画面上に表示してくれます。 github.com インストール Gemfileにrack-mini-profilerを追加します。 本番環境では出したくないのでdevelopだけにインストールする設定にすると良いです。 g…
ユーザーの権限管理をしてくれるauthorityというGemを試してみました。 github.com 初期設定 いつものようにBundlerでインストールします。 gem 'authority' 下コマンドで初期設定をします。 rails g authority:install 使い方 準備 UserモデルとCommentモデ…
ユーザーの権限管理をしてくれるGemを試してみました。 github.com インストール installはいつもどおりbundlerで行います。 gem "pundit" 初期設定 ApplicationControllerでPunditをincludeします。 pundit_userは後で登場するApplicationPolicyの初期化時…
ActiveRecordでデータが存在するかを調べる時はpresent?よりのexists?の方が良いと聞いたので違いを調べてみました。 調べたところ「LIMIT 1の有無」と「カラムの情報を取得するかどうか」が違っていました。 2.2.0 :005 > Item.where(name: 'name').exists?…
require_dependencyはrequireとどう違うの? というところから色々調べてみたメモです。 require_dependencyとrequireの違いはググったら一発解決しました。 違いは下の通りです。 requireはロード済のものはキャッシュして再読み込みしないけどrequire_depen…
attr_encryptedというGemに関する調査メモです。 attr_encryptedとは カラムの暗号化を簡単にしてくれるGemです。 基本的な使い方 GemfileにGemの追加 gem 'attr_encrypted' テーブル作成。 暗号化したいカラムは先頭にencrypted_を付けます。 class CreateI…
jbuilderを使いはじめたのでメモ jbuilderとは jsonのテンプレートエンジンです。 xxx.json.jbuilderファイルにDSLを記述するとJSONにして返してくれるという物。 ファイルに記述するので難しいjson形式を返す時とかは便利そうです。 DHHが作ったもので、Rai…
enumerizeというGemを試してみたのでそのメモです。 enumerizeとは RailsのModelで列挙型を使えるようになるGemです。 使い方 使うための手順 利用する為の手順は下の通りです。 Gemfileに追加してModelに下の2行を追加するだけ。 gem 'enumerize' class Cre…
RSpec自体にあるmatcherの一覧を調べました。 長いので2回に分けています。 be_truthy if文でtrueと判定される物かどうかを調べます。 nilとfalse以外を通します。 RSpec2まではbe_trueという名前でした。 しかし「be_trueなのにtrue以外(数字や文字列)も通る…
論理削除を実現してくれるgem、acts_as_paranoidを試してみました。 環境 Ruby2.1.5 Rails4.2.0 インストール まずはGemfileに以下のように追加してbundle install。 gem 'acts_as_paranoid' しかしWEBrickを起動しようとすると下記エラー。 どうやらrails4…
rbenvについて色々と調べてみました。 使った感想、rbenvのメリットやデメリットについて書いていきます。 rbenvとは 読み方 「あーるびーえんぶ」が一般的みたいです。 最初は「るびーえんぶ」だと思ってました。 概要 リポジトリはこちらになります。 最初のバ…