箱のプログラミング日記。

えんじにあ奮闘記

「privateメソッド=外から呼び出せないやつ」から抜け出す【Ruby】

「privateメソッドって外から呼び出せないやつでしょ?」「レシーバを指定して呼び出せないんでしょ?」から抜け出すべく色々試してみた。 ※2.7以降はレシーバにselfをとれるようになったようなのでバージョンを変えて検証してみた。 試してみる $ rbenv loc…

awkコマンドを使ってみた

awk

業務でCSVをごにょごにょする必要があったのでawkコマンドを学習してみた。 awkコマンドとは AWKはパターンとアクションを組み合わせるプログラミング言語です。 引用元:「シェル芸」に効く!AWK処方箋 「パターンにマッチした場合はアクションを実行する」…

Capistranoのデプロイが急にコケる【delayed_job】

デプロイが急にコケるようになり、色々試行錯誤して解決したのでメモ。 結論から言うとdelayed_jobのpidが悪さをしていて、うまくworkerを再起動できないのが原因だった。 Ruby 2.4.3 Bundler 1.16.1 Rails 5.1.5 Capistrano 3.9.0 delayed_job 4.1.5 発生し…

【MySQL】特定のレコードのみダンプしたい / 特定のテーブル以外をダンプしたい

MySQLでダンプするときに全てのレコードをdumpすると重いので、特定のテーブルの特定のレコードのみdumpしたいなーと思って調べたときのメモ。 基本のmysqldumpコマンド $ mysqldump [options] db_name [tbl_name ...] データベース全体をダンプするには、db…

bashでdateコマンドのフォーマットを指定する

最近bashで色々試してみるのにハマっている。 $ date 2021年 4月 4日 日曜日 16時43分52秒 JST dateコマンドは現在時刻を表示する。 フォーマットを指定したいときは $ date +'%Y%m%d%H%M%S' 20210404191221 $ date +'%Y/%m/%d %T' 2021/04/04 19:14:18 引数…

NoMethodError: undefined method `new' for BigDecimal:Class と言われた時

Rubyのバージョンを2.7.0にあげてrake taskを実行したら見たことないエラーが出たので対処法をメモ。 Ruby...2.7.0 Rails...5.1.5 発生したエラー NoMethodError: undefined method `new' for BigDecimal:Class 下記の記事によると、decimal型のカラムがある…

RailsEngineでRubyのバージョンを変えたい

RailsEngineでRubyのバージョンを変えて使えないのかな〜と思って色々と調べた結果をメモ。 RailsEngineとは エンジン (engine) は、ホストとなるRailsアプリケーションに機能を提供するミニチュア版Railsアプリケーションとみなせます。 ** すなわち、エン…

Amazon Linuxにbundlerがインストールできない

rubyのバージョンを変えた後に新しいbundlerがインストールできずに困ったのでメモ。 Ruby2.4.3(→2.5.0) Rails5.1.5 Amazon Linux AMI release 2018.03 Rubyのバージョンを特定のディレクトリのみ変更 今回、以下のような状況だった。 元々Ruby2.4.3が入っ…

mysql2のインストールでエラーになる / opensslのパスを通す

Railsのプロジェクトでbundle installしたところ、mysql2のインストールでエラーになってしまったのでメモ。 Ruby...2.4.3 Rails...5.1.5 mysql2 発生したエラー Fetching mysql2 0.4.10 Installing mysql2 0.4.10 with native extensions Gem::Ext::BuildEr…

ffiがインストールできない

ffiが突然インストールできなくなったためメモ。 発生したエラー Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/hako/Project/sample_app/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c /Users/hak…

curlの-dやら-Fやらがよく分からない

最近curlのPOSTリクエストでAPIの検証をすることが多いのだけど、最初数あるオプションの使い分けがいまいちよくわかっていなかったのでまとめる。 -d オプション --dataを短く表記したもの。 フォーマット curl -d 'name=admin&shoesize=12' http://example…

Google Ads API をRESTで使いたい

業務でGoogle Ads APIを使うことになったのだけど、クライアントライブラリが訳あって使えずRESTでAPIを叩く羽目ことになったのでメモ。 Google Ads API とは Google広告のAPI。 クライアントライブラリが用意されており、実運用ではこちらの使用が強く推奨…

Google Ads API を使いたい【基礎編】

Google Ads API を使おうと思って色々調べたものの、そもそもGoogle広告のサービス自体を全然理解していなくて実装までに相当時間がかかってしまったのでまとめる。 Google Ads APIとは Googleのサービスのうちの一つである「Google広告」を外部から操作する…

aws-cliにいくつも引数を与えるのがめんどくさい

AWS

前回の記事でaws-cliを使えるようになったのは良いものの、もう少し便利に使えないかなと思って色々ドキュメントを読みあさっていたら便利そうな使い方を見つけたのでメモ。 そもそものAWS CLIについての概要やインストール手順に関しては前回の記事をご覧く…

AWS CLIをインストール + 初期設定まで

AWS

業務で色々とAWSを触らせてもらい、コンソールからの操作にだいぶ慣れたのでCLIに挑戦してみようかなと思い立ちインストールしてみた。 AWS CLIとは AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS サービスとやり…

【Google APIs】OAuth2.0を使って認証を通す

Google APIsの使用にあたりOAuth2.0を使って認証を通すまでの過程をメモ。 前提知識がなさすぎて全体像を把握するまでに相当時間がかかってしまったのと、あちこちに散らばっているドキュメントをつなぎ合わせつつ理解するのがめちゃくちゃしんどかったので…

【MySQL】SELECT文の結果をCSVファイルにエクスポート

MySQLでSELECT文の結果をCSVファイルにエクスポートしようとした時に少しハマったのでメモ。 発生したエラー いつものようにMySQLにログインして、こちらの記事を参考にSELECT文の結果をCSVファイルにエクスポートしようとしたところ mysql>SELECT name FROM…

Dockerコンテナを立ち上げようとして「OCI runtime create failed」「" 〜 permission denied": unknown.」 と言われたとき

Dockerイメージを元にコンテナを立ち上げようと思ったら権限がないよーと怒られたのでメモ。 $ docker -v Docker version 19.03.12 実現したいこと 用意したDockerfileを元にイメージをbuildして、それを元にコンテナを立ち上げたい。 myimage ├── Dockerfil…

Redisでデータベースを指定して接続する

Redisでデータベースを指定して接続する手順についてまとめていきます。 Redisとは Redisは、オープンソース(BSDライセンス)のメモリ内データ構造ストアであり、データベース、キャッシュ、およびメッセージブローカーとして使用されます。 引用元:Redis…

【RSpec】CSVダウンロードのcontrollerテストを書く

RSpecでCSVダウンロードのcontrollerテストを書く方法をまとめていきます。 環境 ruby 2.4.3 Rails 5.1.5 rspec-rails (3.7.2) factory_bot_rails (4.8.2) 完成したソースコード 先にソースコード貼っちゃいます。 まずはコントローラー app/controllers/use…

Redis is configured to save RDB snapshots, but is currently not able to persist on disk.の対処法

起こったこと redisに一括でデータを挿入するスクリプトを走らせたところ、急に以下のエラーが発生した Redis::CommandError:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify …

リモート環境にあるRedisに接続する

リモート環境にあるRedisに接続する方法についてまとめていきます。 redis-cliとは そもそもの話。 redis-cliはRedisコマンドライン インタフェースで、直接端末からRedisにコマンドを送信し、サーバによって送信される応答を読み込むことができる単純なプロ…

異なるEC2インスタンス間でssh接続する

AWS

異なるEC2インスタンス間でssh接続する方法についてまとめていきます。 今回は同じサブネット(ネットワーク)内にあるインスタンスAからインスタンスBに接続するケースを想定しています。 →誤記がありました。正しくは「インスタンスB→Aに接続するケース」…

Dockerコンテナのタイムゾーン設定を変更する

Dockerコンテナのタイムゾーン変更でハマったのでメモ。 結論から言うと、docker-compose.ymlに環境変数TZを設定すればうまくいった。 環境 Ruby 2.4.3 Rails...5.1.5 MySQL 5.7 Docker 19.03.12 Dockerコンテナ...app(Rails)/ db(MySQL)/ nginx 流れ そ…

Dockerコンテナでcdコマンドを使いたい

いつものようにDockerコンテナを立ち上げるだけでなくコンテナに入った状態でcdコマンドを使用したいなと思い調べたのでメモ。 OCI runtime exec failed 普通にいつも通りdocker-compose exec コンテナ名にコマンドをつなげる形でdocker-compose exec コンテ…

ActiveRecord::ConcurrentMigrationError:の対処法

capistranoでデプロイする過程でmigrationがエラーで実行できなかったのでメモ。 ActiveRecord::ConcurrentMigrationError こんなエラーが出た rake stderr: rake aborted! ActiveRecord::ConcurrentMigrationError: Cannot run migrations because another …

初心者によるJSのビルド【Node.js / npm / yarn / webpack / babel】

この記事は前回の記事の続きになります。 前回では、そもそものビルドの意味やそれぞれのプラグイン等がどんな役目を果たすのかという基礎的な部分がわかっていなかったので、その辺を理解していきました。 今回は実際にビルドを実行するところまで進めてい…

Node.jsとは?npm / yarnとは?webpack / babel とは??

JSをビルドしようとすると登場する「Node.js」「npm」「yarn」「webpack」「babel」たちがいまいちよくわからず進んできてしまっていたのですが、最近ようやくそれぞれの役割をざっと理解できるところまで到達したのでメモ。 そもそもビルドとは そもそもの…

EC2インスタンスにredisをインストール

業務のプロダクトにおいて、これまでredisはAWSのElastiCacheを使用していたのですが、色々と訳ありで一旦EC2インスタンス内に直接redisをインストールしてしまおうという話になったため対応しました。 やること 現状としては、webサーバーやDBサーバーなど…

GitHubでプロジェクト(Organization)メンバーの権限を変更する

GitHubでプロジェクトメンバーの権限を変更する方法についてまとめていきます。 具体的に言うと、今回は元々mergeの権限が無かったメンバーが自分でmergeできるように変更がしたかったのでその方法を調べました。 GitHubの権限について そもそものGitHubの権…