三蔵開発メモ

Web開発やインフラ関連のメモを共有します

RubyでネストしたHashをオブジェクト化する方法

Ruby2系までは、ネストした階層のハッシュをオブジェクト化するには、JSON化してOpenStructを使うのが簡単だったが、 Ruby3.0からOpenStructが非推奨になってしまったため、Structでやる必要になって少しはまったのでメモ。 response = { users: [ profile: …

Ruby On RailsでControllerからViewへのリダイレクトの際にメッセージ等レスポンスを返す方法

登録フォームなどをRailsで書いていると、登録成功、失敗それぞれのときにView側にメッセージを返したくなる時がある。 ajaxなどを使ってもできるが、flashを利用するとRailsのみで実現できる。 controller側の例 def create # 何らかの処理 if 成功した場合…

Ruby On Rails、Slimのlink_toでget以外のメソッドを送信したいとき

管理画面の改修をしており、テーブルにある行の1つを削除したいとき、 その行に削除ボタンを設置してそのまま削除処理をおこないたくなるような場面に遭遇した。 = link_to '編集', edit_user_path(user_id) 編集画面に遷移させたいなどであればrotingやcon…

存在するかわからない子データを取得する場合は「&.」が便利

超基本だがよく使うのでメモ。 - users - id - name - user_profiles - id - user_id - age 上記のような1対1の関係のテーブルがある場合、Railsのモデルでuserからuser_profileのageにアクセスする場合は、 user.user_profile.age といったようにアクセスで…

Docker ComposeでElasticsearchを動かそうとしてもうまく動かなかった時にやったメモ

elasticsearchをアップデートしたらうまく動かなくなった。 結論から言うと、 environmentに"bootstrap.system_call_filter=false"を追加した。 elasticsearch: container_name: elasticsearch image: appbrewadmin/elasticsearch:7.9.3 ports: - 9200:9200 …

Ruby2系をRuby3系にアップグレードしたらbootsnapのエラーがでた時の対応

Ruby2.7.5から3.0.4にあげたときrails sを実行時にbootsnapがエラーを出した。 Railsは6.1.5。 .rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require': cannot load su…

Railsアップグレード等でmini_racerやlibv8-nodeなどがビルドエラーになって更新できない問題の対応

Railsの6.0から6.1にアップグレードするだけでもかなりハマってしまったのでメモ。 bundlerを最新にする これだけでも解決することがある。 BUNDLER_VERSION=2.3.9 gem install bundler -v ${BUNDLER_VERSION} bundle _${BUNDLER_VERSION}_ install --jobs=4…

chromeでBasic認証が認証後も出続けてしまう問題

Basic認証をかけているサイトで、一度認証してもページを切り替えるたびにBasic認証が出続ける問題が起きた。 safariで見るとおきないのでどうやらchromeが原因のよう。 調べていくと以下のやりとりを見つけた。 https://serverfault.com/questions/182226/h…

Railsでransackを使った検索を実装した時、検索結果をupdate後も保持するためにしたこと

Ruby 2.4.3 Rails 5.1.6 ransackというgemを利用すると以下のように簡単に検索が実装できる。 こちらの記事がとても参考になった。 Ransackで簡単に検索フォームを作る73のレシピ - 猫Rails ただindex内でupdateを呼んで更新をかけて、またindexにリダイレク…

bundle install で古いバージョンのgemがmacでインストールできなかった場合の対処方法

自分のrails環境でbundleインストールをした際、 ffiというgemの古いバージョンがインストールできなかったため、以下のように設定ファイルを作成するといいことを教わった。 railsプロジェクトのカレントディレクトリで以下を実行 mkdir .bundle cd .bundle…

Kubernetes ingress-nginxで大容量ファイルアップロード等を許可する方法

Kubernetesでアプリケーションを動かしていて、大容量ファイルのアップロードなどを許可する場合、 pod内のnginxやapache、php.iniなどを変更しても、ingress-nginx経由で通信を行っているため、ingress-nginx内の設定を変更する必要がある。 その場合、Conf…

Flutterのバージョンをダウングレードする

flutterにはダウングレードコマンドがあるが、 自分の環境ではいまいちうまく動かなかったので以下のように実行した。 ※flutterをインストールしたフォルダに移動してから実行。 git checkout 1.17.1 flutter doctor flutter --version 「1.17.1」の箇所を任…

AWS ECSについて運用、構築、勉強したことまとめ

ECSがぱっと見複雑だったため、構築時に学んだことをメモ。 要素について クラスター コンテナを入れるための塊。EC2とFARGATEが選べる。 タスク定義 コンテナを起動させる設定。コンテナイメージを指定したり、いくつ起動させるかなどを設定する。 サービス…

CORSにちゃんと対応しているかチェックするcurlコマンド

CORSに対応したときにちゃんとレスポンスを返せるか以下のコマンドでチェックできる。 この場合、 http://sample.jpは、APIを実行したいURL。 https://your-domain.com/your/apiは、CORS対応をしたAPI等のURL。 curl -X GET -I -H "Origin: http://sample.jp…

AWSのECSについて備忘録

AWSのECSというサービスは、シンプルと言われながらも独自の要素が多くつまづいたので概要をメモしておく。 クラスター EC2(VMインスタンス)、FARGATE(抽象化されている)どちらかを選んで作成できる。コンテナ置き場。 タスク コンテナイメージをどのよ…

dockerでlaravelを動かしたらルーティングが正しく動かなかったのを解決したメモ

php7.3-apacheという公式イメージを利用して、dockerでlaravelを動かしたら「/」直下は表示されるのにルーティングはうまくいかなかった。 .htaccessの記述は問題なし php artisan route:list で確認してもちゃんとルーティングはでている いろいろ調べたと…

FlutterでiOS実機ビルドでエラーがでてしまったのを直した

FlutterでiPhoneに実機ビルドしようとしたとき、 アプリはインストールされるのだが、エラーになってしまいsyncできない状態になってしまった。 Unable to locate DeviceSupport directory with suffix 'Symbols'. This probably means you don't have Xcode…

Mac OS X CatalinaにRuby On Rails6環境を構築

勉強用にいれてみました。備忘録メモ。 以下の条件で構築しています。 Xcode インストール済み Command Line Tools インストール済み Homebrew インストール済み rbenvをインストール Rubyのバージョン管理をできるrbenvをインストール brew install rbenv r…

BootstrapVueでテーブル(<b-table>)の見出し(<th>)に任意の色をつける

BootstrapVueを利用しているのですが、見出しにvariantとかで一般的に使える色をつけたいのに、 オプション(head-variant)では「light」と「dark」しか選べないので、 以下の様に解決した。 <b-table :item=items thead-class="bg-primary text-white"> </b-table> thead-classというものが利用できるので、 そこにbootstrap4で…

PHPStorm(又はintellij)で、json_encode関数を使うとアラートが出る

PHP

json_encode関数はそもそもデフォルトで使えるものだが、注意を促される。 なぜかということについては、こちらで詳しく原因を書いてくれている。 blog.pinkumohikan.com 具体的な解決方法は、composer.jsonファイルのrequire内に ext-jsonを追加してあげれ…

mongodbでjavascriptを使って処理を実行するとき外部引数を設定する方法

概要 mongodbでは、jsファイルを実行して複雑な処理をすることができるが、その時外部引数を設定する方法があるのでメモ。 mongodbで実行するためのjsを用意 testというdbに、commentsという「_id(mongoid)」と「insert_date(datetime)」と「comment(string)…

MacでLinuxなどでよく使うコマンドをターミナルに設定

centosなどで使うllコマンドがMacでは使えないので、エイリアスを追加。 vi ~/.bash_profile 以下を追加 ※ついでに色分けするオプション(G)と、フォルダに「/」が足される(F)追加したコマンドを足しています。 alias ls="ls -FG" alias ll="ls -FlG" 設…

python3.7でvenvでの開発環境を作る

python3.7の開発環境をvenvで作る 概要 pythonの仮想環境を作るやり方は沢山あるが、公式チュートリアルにあるやり方をベースにした。 python3.7をインストールして、venvで実行できるようにする。 python3.7 venv macOS 10.14 homebrew python3.7インストー…

Go 1.12 のローカル環境構築、Modulesを使えるようになるまで(MacOS版)

概要 mac OS 10.14 Homebrewインストール済み Homebrewでgoをインストール brew update brew install go go version (go version go1.12.4 darwin/amd64) goenvもいれる brew install goenv vi ~/.bash_profile bash_profileに以下を追加 export PATH="$HOME…

Goにおけるフォルダ(パッケージ)分け

Go言語の勉強を始めたので、基本のメモ。 環境 Go 1.12 フォルダ分け Goはmain関数があるmainパッケージが処理の拠点として存在するが、 処理を切り分けたい場合はパッケージを作る。 以下の内容が書かれた、「main.go」というファイルがあるとする package …

CentOS7とapache2.4で/tmp直下にファイル等を保存したりしたい時

privateTmp機能をoffにする ※セキュリティが下がるのでなるべく注意 /lib/systemd/system/httpd.service --- PrivateTmp=true ↓ PrivateTmp=false --- systemctl daemon-reload systemctl restart httpd

apache2.4でのpreforkのチューニング

apache2.2ではhttpd.confに設定する部分があったが、 2.4では場所が変わっていたためメモ。 sudo vi /etc/httpd/conf.modules.d/00-mpm.conf ------------------------------------------------------------------------------------------- # Select the MP…

QiitaにCentOS7 Laravel5.5 PHP7 mariadb 環境を構築する手順を書きました

主に開発環境等でLaravelを構築するための手順をqiitaに書きました。 上から順に追っていけば環境が構築できるように書いてあります。 qiita.com

MongoDBでレプリカセットを今のデータを保持したまま解除する方法

MongoDBのレプリカセットを解除しようとしたとき、 データを保持したまま解除する方法が分からなくはまった時のメモ。 localデータベースを削除 ホスト機で以下コマンドを実行 mongo >use local >db.dropDatabase() confファイル変更 mongodb ver.2系の場合 …

CentOS6,CentOS7,kvmでvmをコピーする方法と、ネットワーク周りの設定

vmのコピー ホスト機で以下コマンドを実行 virt-clone --original [ベースのvmの名前] --name [新しいvmの名前] --file /var/lib/libvirt/images/[新しいvmのイメージファイル名].img MACアドレス確認 ホスト機で以下のコマンドを実行し、新しいMACアドレス…