- 0.0.1. Stripe CLIを使ってStripe決済をローカル環境で反映させる
- 0.0.2. Model.model_name.humanなどについて
- 0.0.3. 【Rails】has_manyにデフォルトでorderを設定する
- 0.0.4. HerokuでMySQLを使うならJawsDBにしよう
- 0.0.5. [個人開発] 数学好きのためのWebアプリを作ってみた (Rails + Typescript)
- 0.0.6. Rails6系+Vue3系で”Hello, Vue3!”
- 0.0.7. ActiveModelでパラメータのバリデーションをする
- 0.0.8. RailsアプリにBasic認証を実装する
- 0.0.9. rubyにおける::(ダブルコロン、コロンコロン)スコープ演算子
- 0.0.10. ログインができません<初心者>
- 1. ログインが出来ないだって?
Stripe CLIを使ってStripe決済をローカル環境で反映させる
Webエンジニア3ヶ月目のひよっこエンジニアです
Qiita初投稿となりますStripe決済をローカル環境で反映させる方法を先輩エンジニアに聞きながら出来るようになったので自分なりに流れをまとめてみました
いつもやり方忘れてハマるので備忘録兼同じようなレベル感の人のために記録として残しておきます「間違ってるよ!」とかございましたら是非コメントくださいませ!
## 前提
既にStripeの設定を終えていてアプリケーションとして使用できる状態
※ Stripeの設定方法については今回説明しません## ローカル環境ではStripe決済が反映されない?
ローカル環境でStripe決済をしてもそのままではStripe側が決済を認識出来ないため決済がローカル環境に反映されません
> 1.購入処理動作(これはちゃんと動く)
> ↓
> 2.Stripe側が決済を認識出来ないので購入したという証明(invoice)が作られない
> ↓
> 3.証明がないのでローカル環境上では決済した情報が反映されない
> e.g.) 購入完了後の画面に遷移したのに実際に購入されている状態に
Model.model_name.humanなどについて
## いつ使うのか
Model.model_name.humanはいつ使われるのかというとI18nと呼ばれる国際化をする際に使われます。
実際にこのように書かれています。
config/locals/ja.yml
“`
ja:
activerecord:
errors:
models:
user:
attributes:
name:
blank: “が空になっています。入力してください。”
email:
blank: “が空になっています。入力してください。”
models:
user: “会員”
attributes:
user:
name: “名前”
email: “Eメール”
“`
このようにすることで、エラーメッセージ等の文言を日本語化することができるんです。
models階層の文字列を取得するには、
“`
User.model_name
【Rails】has_manyにデフォルトでorderを設定する
## 実装方法
UserモデルにPostモデルが紐づくとします。
並び替えは作成日時の降順(新しい順)です。“`ruby
class User
has_many :posts, -> { order(created_at: :desc) }, dependent: :destroy
end
“`注意いただきたいのは、`dependent: :destroy`はorderの後ろに書くということです。
HerokuでMySQLを使うならJawsDBにしよう
# 先に結論
herokuのアドオンにClearDBはもう使わない。JawsDBにしましょう。
# 本文
## herokuとは
仮想コンテナ型のホスティングサービスで、PaaS(Platform as a Service)にあたります。
heroku内に用意されているgitリポジトリにpush、またはgithubから特定のリポジトリ、ブランチをpullすることでコンテナをビルドします。Ruby, Java, Python, PHPなどのプログラミング言語、またそれらを利用している数々のフレームワークのビルドに対応しています。
## herokuの利点
herokuはポートフォリオのデプロイ先として大変人気があります。同じようなサービスにMicrosoft Azure や AWS などもございますが、 **最低ラインで使い続ける限りは無料で、勝手に有料になることがない**という部分がポートフォリオ用に選ばれやすい大きな理由だと思います。
他の、例えばAWSなどの競合サービスでは、仮想マシンの利用状況に応じて従量課金されます。毎月無料枠があるので慎ましく使えば実質無料です
[個人開発] 数学好きのためのWebアプリを作ってみた (Rails + Typescript)
#まずはじめに
私は数学好きな高校3年生です。プログラミングは1年ほど前から独学で始めました。
今回、個人開発で数学好きのための **「$Mualphatheta$」**というWEBアプリを作ってみたのでこの記事でアプリの紹介をしようと思います。アプリのURL$\; \to\;$ [https://mualphatheta.herokuapp.com](https://mualphatheta.herokuapp.com)
###なぜつくったのか
TwitterやInstagramなどで数学アカウントなるものがたくさんあり、みなさん文章や画像などで面白いと思った問題、自作問題、解いて欲しい問題を投稿しています。
今のシステムでは2点ほど**もったいない**と感じてしまうことがあります。+ **媒体がTwitterやInstagramなどで分散してしまう**
+ **他の媒体ではTexに対応していないため $\raise 5px{x^2}$ などがx^2などで表現され、長い式だとわかりずらい**これらの問題を解決するためにアプリを作りました。
#どんなアプリか
まずはス
Rails6系+Vue3系で”Hello, Vue3!”
###はじめに
当方初記事となりますが、今回は私が一週間くらいハマりにハマってしまったRail6でのVueの導入、そしてブラウザに”Hello,Vue3!”を表示するところまでの手順を記したいと思います。Rails6+Vue3に関する記事はQiitaをはじめとする各Q&Aサイトで多くの方が取り扱っていらっしゃいますが、私はどうにも要領が悪いのか、うまくいきませんでした。なぜかって?こっちが聞きたいです。
Vue.jsを初めて触るという方は、先にVue.js公式にてVue.jsについて確認しておくことを推奨致します。
https://v3.ja.vuejs.org/##本記事のゴール
表題の通り、ブラウザ上で”Hello, Vue3!”です。
![スクリーンショット 2022-02-16 21.52.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2494809/913305ad-7b41-f899-441a-7a8381307435.png)
ね、簡単そうでしょ?##環境(コマンド:バ
ActiveModelでパラメータのバリデーションをする
# はじめに
APIだけ開発して、期待していないJSONでリクエストしたら想定外の挙動になったので、その挙動を紹介します。—
## 期待しない型で送ると500エラーになる
次のパラメータを期待したAPIを考えます。* name
* 文字列型
* 必須
* 1文字以上、10文字以下
* 文字列型
* 必須
* メールアドレスの正規表現
* age
* 数値型
* 必須
* 0以上の整数こんな感じのフォームを作ってバリデーションするかと思います。
“`email_validator.rb
class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) unless /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i.match?(value) record.errors.add(attribute, 'mus
RailsアプリにBasic認証を実装する
## Basic認証とは
HTTP通信に元々備えられているユーザー認証の仕組み。
あるアプリケーションに利用可能なユーザー名とパスワードをあらかじめ設定しておき、ユーザーが利用しようとした際設定していたユーザー名とパスワードを入力させてログインできるようにする機能。要するに個別のパスワード設定ではなく全員に共通したパスワードでログインさせるようなこと。Railsで作成したアプリにBasic認証を導入するのは比較的簡単にできるようなので試してみたいと思います。## Basic認証を実装するメソッド
Railsにはbasic認証を実装する’authenticate_or_request_with_http_basic’というメソッドが用意されているので、それを使ってbasic認証を実装してみたいと思います。
ベーシック認証が成功したらトップページに
![スクリーンショット 2022-02-16 10.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623433/43f6b856-fb
rubyにおける::(ダブルコロン、コロンコロン)スコープ演算子
rubyではスコープ演算子というのがあります。::っていうやつです。
これを使うと、クラスやモジュールで定義されている定数を外部から参照することができます“`
module Test
HOGE=20
FUGA=30
endclass Hogehoge
hoge = Test::HOGE
p hoge
end
=> 20
“`
こうすることによってmoduleで定義されている定数を参照することができるんです。今回はメモ書き程度に終わらせようとおもいます
以上です。何か間違いがございましたら、ご教示いただけますと幸いです。
ログインができません<初心者>
ログインが出来ないだって?
Railsでアプリを作成中。
deviseを使用してユーザー管理機能を実装していました。
サインアップ、ログアウト、編集機能まで順調に進めていたところ、最後に確認としてもう一度正常に動くか確認したところ、、、ロ、ログインができない・・・
ここまできてなんてこった。
どこが原因なのか・・・「Devise::SessionController#new」を経由しているし
サーバーは反応しててパラメーターにもちゃんとメールアドレスとパスワードが入っている。
SequelProを見ながら間違いなく入力しているのに何度やってもログインに失敗し、“`
Invalid Email or password.
(メールアドレスまたはパスワードが無効です。)
“`
↑ これの嵐。初心者の自分にはパニックで一時フリーズ。
いったん冷静になって、また考えました。MVCの流れに沿って進んでいる。
メールアドレスかパスワードが無効ということは、「空」なのか「間違っている」かのどちらか。
でもどちらも間違っ
dbのインデックス備忘録
インデックスについて学んだので、備忘録です。
## インデックスとは
**索引。dbの検索性能を上げる**なぜ検索性能が上がるのかというと、インデックスをつけたカラムでは、レコードが作成される際にソートが行われ、検索したい文字列や数字を全レコード確認することなく、発見することができるから。
### メリットとデメリット
#### メリット
– レコードの検索やソートの速度が上がる#### デメリット
– レコード作成時にソートしないといけない関係で、書き込みの時間が増える### 例
ブログなどの何かしらの記事を投稿するpostsテーブルについて考える。レコードは以下の感じ。*postsテーブル*
| id | body | created_at |
| :— | :— | —: |
| 1 | 本文です。 | 2022-01-01 12:00:00 |
| 2 | 本文です。 | 2022-01-01 12:01:00 |
| 3 | 本文です。 | 2022-01-01 12:02:00 |
| 4 | 本文です。 | 2022-01-01 12:
rails 自動整形ツールRubocopの導入
# はじめに
rubyの自動整形ツールであるrubocopの導入方法をまとめる。# 環境
– rails 6.0.4.4
– ruby 2.6.5
– rubocop 1.25.1# Rubocopとは
Rubyのコード解析ツール。
自身で決めた規定通りにコードを書けているか解析、かつ、自動で修正してくれるツール。
インデントを揃えたり、余分な改行・スペースを削除したりできる。
[RubyStyleGuide](https://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md)に基づいて指摘を行う。公式 https://rubocop.org/
# Rubocopの導入方法
Gemファイルに記載“`Gemfile.
groupdevelopment do
gem ‘rubocop’, require: false
end
“`インストール
“`ターミナル.
bundle install
“`Rubocopの設定ファイルを新規作成
“`ターミナル.
to
Rails チュートリアルのrails serverでエラーが出た
前提
railsチュートリアルの「1.3.2 rails server」でサイトを表示したい。
開発環境 -> Cloud9
rubyおよびrailsバージョンは以下の通り。“`terminal
ruby -v -> ‘6.0.3’
rails -v -> ‘5.1.0’
“`チュートリアルの1.3.1までの環境構築は終わった状態で以下を実行。
“`terminal
Cloud9User:~/environment/hello_app (master) $ rails server#省略
Use Ctrl-C to stop
“`
ここでpreviewすると以下のメッセージ
![ecc24368fac55bcbb0887b02bedc8076.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1106470/c3d3aef3-741d-23f1-8a01-7de51cb31f91.png)
エラーメッセージ↓
config.hosts << "de3360
【Next.js + Rails + CarrierWave + S3】 Next.jsのnext/imageで画像を表示させる方法
# 初めに
この記事ではNext.js が提供している[Image コンポーネント](https://nextjs.org/docs/api-reference/next/image) (next/image)についてのお話です。
__imgタグのこと__ではないので注意してください。# 内部の画像を表示
内部ではルートディレクトリ配下にあるpublicを基準にして表示させることができます。
とても簡単ですね
【例】
/public/images/test.png“` JSX:test.js
“`# 外部の画像を表示
公式にも書いてある通り
ルートディレクトリ直下にnext.config.jsを作り
【例】
example.comの場合“` JSX:next.config.js
module.exports = {
images: {
domains: [“example.com”]
after_createコールバック内の関連テーブル作成処理が2回実行される問題
# 結論
* after_createコールバック内で関連テーブルを作成する場合注意が必要。
書き方によっては関連テーブルが2つ作成されてしまう。# 環境
Ruby 3.0.2p107
Rails 6.1.4.6# やりたかった事
* 生徒が講義の登録を行う多対多構造の作成
* 生徒の登録と同時に必修科目”math”の登録model/course.rb
“`rb
class Course < ApplicationRecord has_many :course_students has_many :students ,through: :course_students end ``` model/student.rb ```rb class Student < ApplicationRecord after_create :regist_essensial_course has_many :course_students has_many :courses, through: :course_students private
herokuにpushできなくてお困りのあなた。こちらをご覧ください。
昨日はできていたpush…
“`
$ git push heroku
Username for ‘https://git.heroku.com/~’:
Password for ‘https://git.heroku.com/~’:
remote: ! WARNING:
remote: ! Do not authenticate with username and password using git.
remote: ! Run `heroku login` to update your credentials, then retry the git command.
remote: ! See documentation for details: https://devcenter.heroku.com/articles/git#http-git-authentication
fatal: Authentication failed for ‘https://git.heroku.com/~’
“`
なんか言ってんな“
haml導入から基本的な使い方
## gemを使いhamlを導入する
“`ruby
gem ‘haml-rails’
gem ‘erb2haml’ # 現在erbでファイルを作成していてhamlに書き換えたい場合はこちらをインストール
“`bundle install
## ※erb2hamlを使いerbファイルをhamlに書き換える場合
“`ruby
rails haml:convert_erbs # erbファイルを残して新しく作り直す場合はこちらのコマンド
rails haml:replace_erbs # erb自体をhamlファイルに変更したい場合はこちらのコマンド
“`rails haml:convert_erbsを実行してみる。
画像上: 変更前(.erb)
画像下: 変更後(.haml)
![スクリーンショット 2022-02-15 9.39.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623433/27b06a3e-8b2b-c8dc-e3fc-81368afbcd12.png)
『rails』いいね機能の実装方法② 非同期通信の実装
#はじめに
現在オリジナルアプリの散歩習慣化アプリを製作中です。
以前の記事で、いいね機能の同期通信までをまとめたので、今回は同期通信までをまとめます!前の記事です。
『rails』いいね機能の実装方法① 同期通信まで
https://qiita.com/yuhi_taka/items/47d8e50ea17b59f016c8#前提と目標
**・前提**
前回までの「同期通信まで」で以下の状態まで実装できています。
[![Image from Gyazo](https://i.gyazo.com/4f32c0931667c17c49b3b5298d8d9947.gif)](https://gyazo.com/4f32c0931667c17c49b3b5298d8d9947)同期通信で、いいねができるようになっています。
データベース設計は以下のとおりです。
![morning-walk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2378833/3ff33848-1115-b8a7-
Railsサーバーを起動したらgem Nokogiriがエラーになった。
#突然にGemがエラーを出し始めた。(きっかけは定かではない)
Railsサーバー起動したらこんな表示が。
![スクリーンショット 2022-02-15 12.50.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468139/fac8c5e2-bc2d-0f7f-a7e8-04354983869c.png)#原因
エラーを翻訳すると 「nokogiri-1.10.9は拡張機能が構築されていないため、無視します。」
でもRailsサーバーは普通に使えていたので、いっとき放置していました。
ただ、起動するたびにこの表示が出て消したいと思うようになりました。#解決法
よくよく続きを読むとかいていました。「試してみてください:gem pristine nokogiri –version 1.10.9」
ということでターミナルでコマンドを試したところ、解消されました。~~~~
gem pristine nokogiri –version 1.10.9
~~~~#学んだこと
英語のエラー
配列でのpopやunshiftなどのメソッド
## popメソッド
popメソッドは配列の最後の値を取り除くメソッドです。
ぼくなりの覚え方ですが、popには「飛び出る」という意味があるので、一番最後の端っこから飛び出るというイメージを持って覚えています。引数に数字(例えば、今回のように2を指定し場合)を指定した場合、末尾からその数字分(今回であれば、2つ)の要素を取り除きます。
“`
array = [1, [2, 3], 4]
p array.pop # => 4
p array.pop # => [2, 3]
p array # => [1]p array.pop # => 1
p array.pop # => nil
p array # => []array = [1, 2, 3]
p array.pop(2) #=> [2, 3]
p array #=> [1]
“`## append(push)メソッド
配列の末尾に要素を追加する
“`
array = [1, 2, 3]
array.push 4