- 0.0.1. 【rails + minitest】 flashに格納したメッセージをassertする方法
- 0.0.2. Rubyのオブジェクト・メソッド・インスタンス・変数についてまとめてみた
- 0.0.3. 【個人開発】純喫茶を気軽に探せる情報サイトを作りました
- 0.0.4. MYSYS2のインストールできないとき
- 0.0.5. ActiveRecordのトランザクションを理解する
- 0.0.6. 一覧ページの読み込みが重たい問題について
- 0.0.7. フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう②(PrawnによるPDFファイルのカスタム)
- 0.0.8. chart.jsが表示されない現象について
- 0.0.9. フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)
- 0.0.10. ポートフォリオサイト作成までに勉強した内容を紹介します
- 0.0.11. Ruby 2.6、Rails 5.2 からの Ruby 3、Rails 7 へのバージョンアップ
- 0.0.12. Rails コメント+星機能
- 0.0.13. ControllerやModelからDecoratorのメソッドを呼ぶ
- 0.0.14. LoadError (cannot load such file -- sassc)
- 1. Railsでscssを適用しようとしたらLoadError (cannot load such file -- sassc)
【rails + minitest】 flashに格納したメッセージをassertする方法
## 概要
minitestでrailsのテストを書いていてふと、
「flashの内容でコードの挙動を確認出来れば、testコードの可読性があがりスマートなのでは??」と思ったので、書き方をメモします。## 結論
以下のように記載すればOK。assert flash.to_hash.value? “想定されるメッセージ”
## 詳細
Flashクラスはよくわからないので、`to_hash`でハッシュに変換したのち、`value?`メソッドで格納されたメッセージを検索してます。これを使えば、以下のように、テストコードの可読性がグンッと上がって幸せ
“`ruby:sample-test
test “records-destroy” do
# 正常系
sign_in(@user2)
delete record_path(1)
assert flash.to_hash.value? “レコードを破棄しました”
# ↑ 一目瞭然
assert_redirected_to records_path# 異常系
delete record_pa
Rubyのオブジェクト・メソッド・インスタンス・変数についてまとめてみた
## オブジェクトについて
### オブジェクトとは
Rubyにおいてはクラスから生成されたもののこと。### クラスについて
Hogeクラス、のようなクラスを定義したとする。RubyではこのクラスもClassクラスに所属しているオブジェクトである、というのが大きなスタート。
これはどういうことかと言うと、HogeクラスというものがあったとするとこのHogeクラスも実際は`Class.new`して作られている、オブジェクトである、ということ。
下記の意味は`Hoge=Class.new`と同意義である。
“`ruby
class Hoge
end
“`### インスタンスオブジェクト(インスタンス)
クラスから生成されるのがインスタンスオブジェクト(インスタンス)。
`クラス名.new`で生成することができる。
RailsにおけるモデルはClassクラスからインスタンスを生成し、定数を与えていると言える。
コントローラーも同様。### レシーバーとは
メソッドの戻り値を受ける対象
下記の場合、Personがレシーバー。オブジェクトの世界ではオブジェクトにメッセージを送
【個人開発】純喫茶を気軽に探せる情報サイトを作りました
![スクリーンショット 2022-10-16 9.23.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2899752/1810558a-2a57-e799-e0b1-bba86c1925ee.png)
**近くの純喫茶を気軽に探せて、こだわりの条件でお店を絞り込み検索できる「純喫茶Trip」を開発しました**
**URL: https://junkissa-trip.link/**
**Github: https://github.com/harpseal-chan/JunkissaTrip**# :information_desk_person:はじめに
はじめまして。HarpSeal([@azarashi_0424](https://twitter.com/azarashi_0424))と申します。
わたしは純喫茶巡りが趣味で、普段はGoogle Mapやグルメサイト、ウェブマガジンの特集を見ながら行きたいお店を探しています。
しかし、グルメサイトやGoogle Mapではチェー
MYSYS2のインストールできないとき
# MYSYS2のインストールで困った話
rubyの環境構築中にMYSYS2をインストールしようとした際に以下のエラーが発生しました“`
_____ _ _____ _ _ _ ___
| __ \ | | |_ _| | | | | | |__ \
| |__) | _| |__ _ _ | | _ __ ___| |_ __ _| | | ___ _ __ ) |
| _ / | | | ‘_ \| | | | | | | ‘_ \/ __| __/ _` | | |/ _ \ ‘__/ /
| | \ \ |_| | |_) | |_| |_| |_| | | \__ \ || (_| | | | __/ | / /_
|_| \_\__,_|_.__/ \__, |_____|_| |_|___/\__\__,_|_|_|\___|_||____|
__/
ActiveRecordのトランザクションを理解する
Railsのトランザクションについて理解が曖昧だったため調べてみました。トランザクションって何?という方から、トランザクションについて知ってるつもりな方まで読んでいただけると幸いです。
## この記事の目的
– トランザクションを理解する
– Ruby on RailsのActive Recordでのトランザクションの使い方を理解する## トランザクションとは?
トランザクションとは、複数のSQL文によるデータの更新を「1つの処理」とし、全てのSQLの実行が成功した時にデータベースに更新分を反映させることです。データベースの整合性を保つ目的があります。基本的に、複数のSQLを同時に実行する際はトランザクションを使う必要があります。
### トランザクションの使用例
代表的なトランザクションの使用例は、銀行での取引です。カエル?さんがクマ?さんに2万円送金するとします。?さんは日本におり、?さんはロンドンにいます。その際のデータベースの処理は下記のようになります。
1. ?さんの銀行口座に2万円の残高があるか確認する
1. ?さんの銀行口座から2万円を引き落とす
1.
一覧ページの読み込みが重たい問題について
初めに
ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。![top画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/75cffe6d-1714-fc3c-9ad8-068addf06205.png)
※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス ### 発生している問題・エラー ・先程の画像のように、`一覧ページ(画像を扱っているページ限定)`を開こうとしたとき読み込みが重たくなる現象が発生 ※問題なく表示されるパターンもあれば、タイムアウトや以下のエラーが発生する時もありました。 イメージ画像 ![activerecode-errore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2
フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう②(PrawnによるPDFファイルのカスタム)
# 初めに
この記事は`フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう`の後半です。
[フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)](https://qiita.com/eityamo/items/ff327fec918d882e25f6)前回まででPDFファイルを出力するところまで実装できました。今回はPrawnのGemによる基本的なカスタム方法について説明していきます。
# PrawnによるPDFのカスタム
Prawnの基本機能は`Text`、`Graphics`、`Bounding Box`の3つです。
それぞれについて説明しながら印鑑を実装していきます。実装する準備としてPDFに座標を表示します。
“`ruby:stamp_pdf.rb
class StampPdf < Prawn::Document def initialize(user) super(page_size: 'A4') # 座標を表示 stroke_axis
chart.jsが表示されない現象について
# エラー内容について
ポートフォリオを制作するにあたって、データを視覚的に見れるようにするためにChart.jsを使用しました。
実装し確認をしていると、グラフが表示されない時があり、更新した場合表示されるという現象が起きました。
その時の失敗の理由について書いていきたいと思います。(フレームワークはRuby on Railsを使用しました。)
# 解説
### 問題のあったコードについて
様々なページでグラフを表示させたいため、部分テンプレートでChart.jsを利用したグラフの実装を行いました。
“`js:_line_graph.html.erb
## 1. エラー状況
アプリ制作中にedit画面からconfirmアクションに遷移したら`couldn't find Feed with 'id'=confirm`というエラーが発生してしまいました。?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/dfcdecb2-a8ff-b805-0a1c-bbe9062ef641.png)new画面からconfirmアクションに遷移するときはこのようなエラーは発生せず遷移できたのですが…?
まず、不可解な点はidの中に通常、番号が入るところが、cofirmという文字列が入ってしまっている点です。
このとっかかりから原因を突き止めることができました。`コード`と`confirmにパラメータ渡すときのlog`を以下に載せておきますので、皆さんも考
【超簡単】Rails 日ごとに投稿をまとめ詳細ページに表示する
# はじめに
日ごとに投稿を1つのリンクにまとめ、その遷移先にその日の投稿がまとまったページを作成する方法を伝授します!
コピペだけで実装できます!
(※実装しているものと若干合わせる必要はあると思います?)## コントローラー
```ruby:posts_controller.rb
class TweetsController < ApplicationController def index @tweet = Tweet.new @days = Tweet.group("date(created_at)") end def create tweet = Tweet.new(tweet_params) if tweet.save redirect_to :action => "index"
else
redirect_to :action => "index"
end
enddef show
@date = params[:date]
@tweets = Twe
Railsのデータベースコマンドこれさえ見れば問題なし!
## 概要
Railsアプリでデータベースをmigrateする際の有用なコマンドをこの記事にまとめる。## migrateコマンドまとめ
### ファイル作成コマンド
- マイグレーションファイル作成
`rails g migration クラス名`
```
$ rails g migration CreateUsers
Running via Spring preloader in process 310
invoke active_record
create db/migrate/20220913055401_create_users.rb
```- モデルファイル作成
`rails g model モデル名`
```
$ rails g migration User
Running via Spring preloader in process 315
invoke active_record
identical db/migrate/20220913055401_create_users.rb
【Rails】onclick属性を指定してもJSの関数が使えない
# やりたいこと
ビューファイルに直接書いたJavaScriptをapp/javascript/packs/application.jsファイルに移行したい。```slim:app/views/**s/**.html.slim
javascript:
function hoge(target) {
〜処理〜
}input type="button" value="hoge" onclick="hoge(this)"
```# 上手くいかない
JavaScript部分をそのまま切り取ってapp/javascript/packs/application.jsファイルに移行すると今まで動いていたのに、動かなくなってしまう。# [teratail](https://teratail.com/questions/343393)で解決法を発見
> 記述したjavascriptが関数でラッピングされてる可能性があるので、HTML側から呼び出せないのかもしれません。
関数をonclickで呼び出したいならglobal領域に突っ込んであげると上手くいくかもしれません。