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

えんじにあ奮闘記

RubyでFile.openを使うときに気をつけたいこと

タイトル通り。 これまであまりファイルの扱いをするような実装をしてこなかったのでメモ。 Ruby...2.4.3 CSV...2.4.8 File.open ファイルアクセスのためのクラス。openに引数を渡すことでファイルオブジェクトを生成する。 File.openとFile.newで何が違うん…

Nginxをリバースプロキシで使う場合のCORS設定

NginxのCORS周りの設定においてリバースプロキシとして使用する場合の情報が少なかったのでメモ。 前提 サーバーの構成はこんな感じ アプリケーションへのリクエストを捌くために、webサーバーとしてNginxを、アプリケーションサーバーとしてPumaを使ってい…

【Docker】不要なコンテナやイメージを削除する

Dockerイメージを--no-cacheでbuildすることがよくあるのだけど、その度に新しいイメージが溜まっていき、未使用のイメージが結構溜まってしまっていたためメモ。 $ docker -v Docker version 19.03.12, build 48a66213fe 未使用のコンテナを削除 まずはイメ…

Docker for Mac が遅い(怒)

Docker for Mac が遅くて遅くてもう仕事にならないレベルになってきたのでどうにかならないかなと思い調べた。 Docker version 19.03.12 Docker Desktop 2.3.4.0 メモリを引き上げる これまでの対策としてはDockerに割り当てるメモリの上限をデフォルトの2GB…

Twitter API v2 を使ってみた

TwitterのAPIを使ってみました。 v2がリリースされたようでせっかくなのでこちらを。 What's New with Twitter API v2 | Docs | Twitter Developer Platform 手順 今回はとりあえずcurlでツイートを取得できるところまでやりたい。 developerアカウントの作…

「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 コンテ…