【Haskell】データコンストラクタにバリデーションを設ける方法

HaskellでCLIツールを作っているときに, 本記事のタイトルにあるようなことを疑問に思いました. 例えばサイコロを表すデータ型を次のように定義したとしましょう(diceの単数形はdieであることに注意). ここではDieモジュールの中でDie型を定義しています. mo…

【Rails5】assert_differenceで複数の値をチェックする

概要 特定の処理の前後における数値の増減をテストしたいことはよくあります. 例えばPOSTリクエストの前後でUserが増加するテストなどです. これをテストするにはassert_differenceというメソッドを使い, 次のように書けばいいですね. assert_difference 'Us…

【Rails】RakeタスクをMinitestでテストしてみた

はじめに TDDでRakeタスクを作ろうとしたものの, テストをどう書けば良いのかがわかりませんでした. ネット上にあるのは, RSpecの記事や英語の記事ばかりだったため, MinitestでRakeタスクをテストする方法を書き残しておくことにしました. 主に参考にしたの…

HaskellのStateモナドを定義から理解する

本記事の目的 解説 Stateモナドの定義 ひとつの補題 コードを読み解いていく まずは部分的に そして全体へ まとめ 本記事の目的 Stateモナドの挙動を定義から導出したい. それが本記事の目標です. Stateモナドについて調べると, いくつかの記事がヒットしま…

【GAS】GoogleDrive上のExcelをGoogleスプレッドシートに一括変換

GAS

概要 まだまだExcelさんは現役ですね. でもMac使いだとOfficeがインストールされていなかったり, 共有したいときに不便だったりします. そんなときはGoogleスプレッドシートに変換してしまいましょう. GoogleDrive上でExcelファイルを開くと, 「Googleスプレ…

GASからGoogleDrive操作してみた.

GAS

概要 Google Apps Scriptを使って, Google Drive上のファイルにアクセスしてみました. 当然ながら, アクセスするのは自分のGoogleアカウントに紐づいたDriveです. 情報源 基本的には公式リファレンスを読めば大体のことがわかります. 困ったときはそちらを参…

Slack Botの土台をGASで構築

Slack Botの土台をGASで構築 業務効率を上げたり, 時には癒しをくれたり, 調べてみると様々なBotの活用事例があるようです. この記事ではSlackBotの土台となるものをGASで構築していきます. ゴール この記事を読んだらなにができるようになるかを述べておき…

【Rails5】数時間溶かしたエラーの原因はRoutingにあった

長時間悩んだ末にエラーが解決できると, なんとも言えない達成感があります. それと同時に,「俺の時間があああ」とも思いますが... 今回時間を奪ったものは正確に言うと, エラーではなくテストです. 何度やってもテストが通りませんでした. しかしエラーも引…

【Rails5】Herokuへのデプロイ

基本的に【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】を参考にさせてもらった. でもやっぱりね, エラーは出るもんですよ. 赤文字で出たエラーがこれ. Precompiling assets failed. だからこればっかり検索してたんだけど, あ…

【Rails5】Autoprefixer doesn’t support Node v4.8.2. というエラーへの対処法

Rails5での開発中に Autoprefixer doesn’t support Node v4.8.2. というエラーに遭遇しました. (少なくとも私の環境では解決した)対処法をまとめました. 環境 MacOS 10.13.6 Rails 5.2.0 Docker 18.06.0-ce 対処法 検索してみると, Stack Overflowで質問され…

【Rails5】`find`と`find_by`の違い

単一のレコードを取得する2つのメソッドの違いをまとめました. これについての記事はいくらでもあるけどね. 違い find idで検索を行う. レコードが見つからない場合はエラー. User.find(1000) ActiveRecord::RecordNotFound (Couldn't find User with 'id'=1…

【Rails】データベース上のデータをシンボルで取得

前置き 私はRails Tutorialを1周しただけの初心者ですから, いろいろツッコミどころがあるかもしれません. ご容赦くださいませ. やりたいこと たとえばボクサーのデータベースシステムを作るとします(ボクシング全然知りませんが...). データベースには名前(…

has_manyで関連づけられたモデルも一括保存する方法

Nested Attributesによって, has_manyで関連づけられたモデルのデータも丸ごと保存する方法を紹介します. モデル例 本記事では例として以下のようなモデルを扱うことにします. class User < ApplicationRecord has_many :posts end class Post < Application…

Railsチュートリアル 第14章

14.1 Relationshipモデル 14.1.1 演習1 演習2 14.1.2 演習1, 2 14.1.3 演習1 14.1.4 演習1, 2 14.1.5 演習1 演習2, 3 14.2 [follow]のWebインターフェース 14.2.1 演習1, 2 14.2.2 演習1, 2 演習3 14.2.3 演習1, 2 14.2.4 演習1 演習2 14.2.5 演習1 演習2 14…

Railsチュートリアル 第13章

13.1 Micropostモデル 13.1.1 演習1 演習2 演習3 13.1.2 演習1 演習2 13.1.3 演習1 演習2 演習3 13.1.4 演習1, 2 演習3 13.2 マイクロポストを表示する 13.2.1 演習1 演習2 演習3 13.2.2 演習1, 2 演習3 13.2.3 演習1, 2 13.3 マイクロポストを操作する 13.3…

Railsチュートリアル 第12章

12.1 PasswordResets リソース 12.1.1 演習1 演習2 12.1.2 演習1 12.1.3 演習1 演習2 12.2 パスワード再設定のメール送信 12.2.1 演習1, 2, 3 12.2.2 演習1 演習2 12.3 パスワードを再設定する 12.3.1 演習1 演習2 12.3.2 演習1, 2 12.3.3 演習1 演習2 演習3…

Railsチュートリアル 第11章

11.1 AccountActivations リソース 11.1.1 演習1 演習2 11.1.2 演習1 演習2 11.2 アカウント有効化のメール送信 11.2.1 演習1 11.2.2 演習1 11.2.3 演習1, 2 11.2.4 演習1 演習2 11.3 アカウントを有効化する 11.3.1 演習1, 2 11.3.2 演習1, 2 11.3.3 演習1,…

Railsチュートリアル 第10章

10.1 ユーザーを表示する 10.1.1 演習1 演習2 気になった点その1 気になった点その2 10.1.2 10.1.3 演習1 10.1.4 10.2 認可 10.2.1 演習1 10.2.2 演習1 演習2 10.2.3 演習1 演習2 10.3 すべてのユーザーを表示する 10.3.1 演習1 10.3.2 演習1 10.3.3 演習1 …

Railsチュートリアル 第9章

9.1 Remember me 機能 9.1.1 演習1 演習2 9.1.2 疑問1 current_userメソッドの定義 疑問2 どうしてログアウトできないのか 演習1, 2 9.1.3 演習1 9.1.4 演習1, 2, 3 9.2 [Remenber me] チェックボックス 9.3 [Remember me] のテスト 9.3.1 演習1 9.3.2 9.1 R…

Railsチュートリアル 第8章

8.1 セッション 8.1.1 演習1 演習2 8.1.2 演習1 8.1.3 演習1 8.1.4 8.1.5 演習1 8.2 ログイン 8.2.1 演習1 演習2 8.2.2 演習1 演習2 8.2.3 演習1, 2 8.2.4 演習1, 2 8.2.5 演習1, 2 8.3 ログアウト 演習1 演習2 8.1 セッション 8.1.1 演習1 省略. 演習2 rout…

Railsチュートリアル 第7章

7.1 ユーザーを表示する 7.1.1 演習1 演習2 7.1.2 演習1, 2 7.1.3 演習2 7.1.4 演習1, 2 演習3 7.2 ユーザー登録フォーム 7.2.1 演習1 演習2 7.2.2 演習1 7.3 ユーザー登録失敗 7.3.1 7.3.2 演習1 7.3.3 演習1 演習2 7.3.4 演習1 演習2 演習3 演習4 7.4 ユー…

Docker環境でByebugを使う方法

概要 Railsチュートリアルの第7章でByebugを使っています. Docker環境でByebugを利用するためには, 追加手順が必要なので書き残しておきます. 本当ははじめから全てが整った環境を構築できれば申し分ないですが, 途中からでも以下の手順を実行すれば問題あり…

【Rails, Docker】コンテナが起動後すぐに落ちてしまうトラブルの原因とその対処法

概要 DockerでRails環境を構築すると, コンテナが起動しないトラブルに見舞われることがあります. その原因と対処法を説明します. トラブルケース 以下のようなコマンドでRails Serverが稼働しているコンテナに入ったとします. docker-compose exec <Rails container> bash 一</rails>…

Railsチュートリアル 第6章

6.1 Userモデル 6.1.1 演習1 schema.rbの内容は以下の通りです. ActiveRecord::Schema.define(version: 2018_06_25_044152) do create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| t.string "name" t.string "em…

Railsチュートリアル第5章

5.1 構造を追加する 5.1.1 レイアウトファイルを更新し, home.html.erbも編集をします. curlコマンドでRailsのロゴをダウンロードしました. 確認のためにFinderからロゴ画像を開いたところ, 邪魔な.DS_Storeファイルが生成されてしまいました. $ git status …

Railsチュートリアル 第4章

Railsチュートリアルの第4章です. この章はわりと演習が楽しかったですね. 4.1 動機 トピックブランチを作成し, チェックアウトします. 4.1.1 省略. 4.1.2 カスタムヘルパーの作成は, 4.2を終えてからにします. 4.2 文字列とメソッド 4.2.1 省略. 4.2.2 省略…

Railsチュートリアル 第3章

Railsチュートリアルの第3章を進めた際のメモです. チュートリアルに書かれていることは書かないようにしています. かなり個人的なメモですから, 参考程度にご覧ください. 3.1 セットアップ Dockerを使って環境を構築しました. 詳しくはこちらで解説していま…

Railsチュートリアル 第2章

Railsチュートリアルの第2章を進めました. 概観をつかむ章ですね. 2.1 アプリケーションの計画 2.2 Usersリソース 2.2.1 演習1 演習2, 3 演習4 2.2.2 演習1 演習2 演習3 2.3 Micropostsリソース 2.3.1 演習1 演習2 演習3 演習4 2.3.2 演習1 演習2 2.3.3 演習…

Railsチュートリアル 第1章

環境構築 開発環境はDockerを使って構築しました. 詳細な手順は以前の投稿にて詳しく解説しています. 環境構築の時点で, rails newまで終わらせています. ファイルを編集する前にGitリポジトリを作成しました. Gemfileの編集 チュートリアル通りのバージョン…

DockerでRails+MySQLの環境を構築

Railsチュートリアルを進めるための環境を構築しました. 概要 作業環境 ひとつの疑問 各種ファイル MySQLコンテナ用のDockerfile Webサーバーコンテナ用のDockerfile 2つのコンテナをまとめて扱うComposeファイル GemfileとGemfile.lock Railsアプリの骨組み…