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

えんじにあ奮闘記

Railsでhttps通信を使ってjsonでPOSTする

Railsのアプリケーションでhttpsリクエストを走らせ、jsonでPOSTしたい時の記事があまり無かったので書いておく。 完成形を先に class Sample require 'net/https' require 'uri' require 'json' def post_message uri = URI.parse("https://www.y-hakopro.c…

環境変数についておさらい

今更すぎるけど環境変数について少し深掘り。 環境変数とは 環境変数とは、OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの。 引用元:環境変数とは - IT用語辞典 e-Words 「環境変数」って言うと一般的に…

「パスを通す」の意味をちゃんと理解する

「パスを通す」ってよく言うしなんとなく普段言われるがままやってるけど、ちゃんと言語化しておこうと思いLinuxのお勉強。 そもそもの話 そもそも日頃実行しているコマンドたちは、それ自体がどこかにファイルとして存在していて、コマンドを叩くことでファ…

Dockerを使った環境構築が楽すぎてビビった

突然の社用PCフリーズからの入社後2回目の環境構築、今回はGo編。 弊社ではRailsとGoを使っていて、RailsはまだDocker化されていないので結構大変だったんだけど、Goの方はDocker環境なのでめちゃめちゃ楽で驚いた話です。 Dockerのインストール $ brew inst…

MySQLがまたまた起動しない【自動起動で解決】

以前もだいぶエラーにハマってこんな感じの記事を書いた気がするのだけど、前はだいぶごちゃごちゃいろんな原因が絡んでいて複雑だったので、改めてシンプルに残しておくためにメモ。 ハマったエラー $ bin/rails db:migrate rails aborted! Mysql2::Error: …

Xcodeのインストールができない

社用macが不具合起こしてPC変えざるを得なくなったため、新しいPCで再度環境構築。。 その際にXcodeのインストールで詰まったのでメモ。 Xcodeとは Xcode(エックスコード)は、ソフトウェアを開発するためのアップルの統合開発環境 (IDE) であり、かつてはM…

文字列の一部を削除したい【delete / gsub】

Railsで開発していて渡ってきた文字列を操作したいなーと思った箇所があったのでメモ。 deleteメソッド delete(*strs) -> String self から strs に含まれる文字を取り除いた文字列を生成して返します。 引用:String#delete (Ruby 2.7.0 リファレンスマニュ…

本番と同じエラー画面を出したい【Rails】

Railsでの開発中に本番同様のエラー画面が表示される様に設定を変更する方法について。 設定方法 config/environments/development.rb # Show full error reports. config.consider_all_requests_local = true これを # Show full error reports. config.con…

コンフリクト解消した後にpush/pullができない【Git】

GitのCUI操作もだいぶ慣れてきたけどコンフリクトが絡むとお手上げ〜な人向けにまとめる。 そもそもどうやってコンフリクトを解消したか コンフリクトは解消できたけど、その後に色々やろうとしたらつまづいたってこと多々あるはず。 まずはじめに大前提とし…

Cannot delete or update a parent row: a foreign key constraint fails【MySQLエラー】

MySQLのエラーでちょっとハマったのでメモ。 models/user.rb class User < ApplicationRecord has_many :articles, dependent: :destroy end models/article.rb class Article < ApplicationRecord belongs_to :user end migration(article) create_table "a…

dependent: :destroyとdependent: :delete_allの違い【Rails】

関連モデルを一緒に削除してくれるdependent: :destroyとdependent: :delete_allについて、違いがよく分かってなかったのでまとめました。 モデルを用意 models/user.rb class User < ApplicationRecord has_many :articles end models/article.rb class Art…

【 f.check_box】チェックボックスをデフォルトでチェックさせたい

Railsのビューヘルパーって引数の順番とか個数とかいつも忘れやすくてよくつまづく。 今回はチェックボックスにHTML属性のcheckedをつけておき、最初からチェックされている状態を再現します。 checked属性とは checked属性を指定すると、あらかじめその選択…

Railsのserialize/storeを試してみた

カラムの値をハッシュ形式で保存する方法があるらしい、というのは以前聞いた事があったのですが、この度色々調べていたところserializeやstoreを使えば実現できるという事が分かったので、ちょっと使ってみました。 ※Railsのserializeやstoreをプロダクトに…

Railsのbooleanの扱いをちょっと追ってみた【Rails】

Railsで真偽値(boolean型)を使うに当たって、パラメーターやDB間でどのように受け渡しされるのかというのをちょっと追ってみた。 migration classCreateUsers < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.string :name, null…

html_safeとsanitizeの違い

DBに保存した文字列の改行を反映させたいと思ってググったら、今まで見たことのあるhtml_safeの他にsanitizeというものが出てきて違いが気になったので比べてみた。 エスケープとは まず、そもそも日頃よく目にする「エスケープ処理」について改めておさらい…

Railsのloggerを使ってみた

特に必要だったわけじゃなんだけど、本を読んでて気になったloggerを少し触ってみたのでメモ。 loggerとは rails sでサーバーを起動すると、ローカルでリクエストが走った時やSQLが走った時などターミナルにダダダっとログが出力されるけど、あれもRailsのlo…

【Rails】findとfind_byの違い / find_byとwhereの違い

Railsでアプリケーションの開発をするようになってもう数ヶ月経ちますが、findやらfind_byやら(whereやら)の明確な違いをよく分からないまま使ってしまっていたので、色々触ってまとめてみました。 findメソッド findメソッドを使用すると、与えられたどの…

new_record?とかchanged?とかRailsの便利なメソッドまとめ

データベースとのやりとりで非常に便利なメソッドをいくつか使用する機会がありとてもRailsらしくて感動したので、いくつかまとめておきます。 新しいオブジェクトかどうか【new_record?】 その名の通り、オブジェクトが新しいレコードかどうかを検証してく…

Ralisで入力確認用フォームを作りたい【_confirmation】

サービスを作っていると「パスワードやメールアドレスの確認用入力フォームを作りたいな〜」みたいな時ありますよね。 イメージこんな感じ。 (パスワードだったらユーザー認証のライブラリがだいたいやってくれてるような気もしますが。。) Rails標準のヘ…

Railsのスコープの書き方【SQL】

スコープって何?状態だったところから、使ってみると非常に便利だったのでスコープについて書いておきます。 ちなみにここで言うスコープはメソッドのスコープとかではなく、SQLとのデータのやりとりを簡潔にまとめるときに便利な方のスコープさんです。 ス…

複数バージョンのインストール【Ruby】

個人開発でRubyを使うときに、仕事で使っているバージョンより新しいものを使いたいな、と思って別バージョンのインストール方法を調べてやってみたので、まとめておきます。 rbenvのインストール Rubyのバージョン管理にはrbenvが必要になるのでインストー…

Updates were rejected because the tip of your current branch is...が出たとき

gitを使ってるとたまにこんな場面に遭遇する。 Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. 'git pull ...') before pushing again. すでにリモートにプッシュ済…

assign_attributesなのに保存されてしまう

Railsでのアプリケーション開発で「DBに保存したくないけど値を更新したい」時ってあると思いますが、そんな時に便利なassign_attributesで少し詰まったのでメモ。 update_attributesとassign_attributesの違い update_attributesとassign_attributesの違い…

テーブルの長文を折り返し表示したい【Bootstrap】

テーブルの中身を折り返し表示したい場面って結構遭遇すると思いますが、 その中でも今回はBootstrapで作られたテーブルについてのお話。 問題:折り返し表示が適用されない Bootstrapでは簡単にテーブルを作ることができて便利なのですが、中身が長くなると…

uniqueness: trueでnillを許可したい【Rails】

DBに保存する前に一意かどうかを検証したい場合、バリデーションで uniqueness: true を使うと思いますが、presence: trueを併用しない場合(値がなくても良い場合)に少しつまづきました。 今回の問題 validates :hoge_code, uniqueness: true このままだと…

referencesのカラムを後から追加・削除【Rails】

references型のカラムを後から追加したり削除したりしたい時にちょっとつまづいた話。 まずモデルの説明から 今回はuserモデルとgroupモデルがあり、中間テーブルはgroup_user。 あるグループを作成する時に複数userを選択しますが、 groupsテーブルにはグル…

中間テーブルへの保存ができないのはseedが原因かも【Rails】

中間テーブルへの保存ができなくて、一生懸命コードのいろんなところを探して調べたりしたけど、結局DBが原因でしたよという話。 まずモデルの説明から 今回はuserモデルとgroupモデルがあり、中間テーブルはgroup_user。 あるグループを作成する時に複数use…

data-confirmに苦労した話【Rails】

業務で削除前に「本当に削除してよろしいですか?」的な確認ダイアログを作りたくて、 意気揚々とdata-confirmを使ったのは良いものの、まさかのところでハマってしまった記録。 そもそもdata-confirmとは HTML5から使えるようになったもので、railsではaタ…

ソケット通信とは

仕事でソケット通信の知見が必要だったので、少し勉強しました。 まだふわっとしか理解できていませんが、一度整理しておきたいと思います。 ソケット通信とは インターネットはTCP/IPと呼ぶ通信プロトコルを利用しますが、そのTCP/IPをプログラムから利用す…

コミットのやり直し

gitのCUI操作にもだいぶ慣れてきました。 今回は、基本的なpush,pull,mergeは理解している方がさらに使えると便利な コミットの修正についてまとめていこうと思います。 コミットを修正したい時・・・amend コミットメッセージを変えたい 私もよくあるんです…