- 0.1. Webpacker::Manifest::MissingEntryError を解決したい
- 0.2. 退会確認画面 退会ステータス
- 0.3. 既存のRailsアプリをRansack 4に対応させる手順
- 0.4. Sorbetのruntimeチェックを試してみた
- 0.5. 顧客側 新規登録
- 0.6. プログラミング半年おにいさんが贈る、プログラミング初学者さんへ
- 0.7. オブジェクト指向エクササイズをRubyで書いてみる
- 0.8. 顧客側 Topページ
- 0.9. 新卒エンジニアに捧げる! 新人でも貢献できるコードレビューの方法!
- 0.10. 【Ruby】7の倍数の数値の中に7が何回現れるかをカウントするロジック
- 0.11. 管理者 商品詳細ページ
- 1. 商品詳細
Webpacker::Manifest::MissingEntryError を解決したい
## Webpacker::Manifest::MissingEntryError
ただrails sコマンドを実行したところ、今までに見たことの無いエラーが突然吐かれて混乱。
“`ruby:エラー
ActionView::Template::Error (Webpacker can’t find application.js in /home/ec2-user/environment/Javajiten/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker’s config/webpack
退会確認画面 退会ステータス
**はじめに**
bootstrap導入済
namespases使用
devaice導入
:blossom:boolean型で実装
________
今回の完成イメージ
![スクリーンショット 2023-07-20 23.47.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/3e8e4249-9f2c-b6fb-ea23-3b15bba2e2f7.png)
### :cherry_blossom: boolean型について
真偽値を表現するためのデータ型です。これは、主に論理的な真(true)または偽(false)のいずれかの値を持つことができます。データベースでの使用例としては、ユーザーが商品の購入を希望しているかどうか、商品が在庫切れかどうかなど、二つの状態のうちどちらかを示す必要がある場合に使用されます。
Railsでは、これをデータベースのカラムに適用して、そのカラムがtrueまたはfalseの値を持つことができます。例えば、今回のis_deletedフィールドは、顧
既存のRailsアプリをRansack 4に対応させる手順
## はじめに
Ransack 4.0.0では「検索可能な列」や「検索可能な関連モデル」をモデル内に予め定義しておかないと、以下のようなエラーが発生します。“`
RuntimeError in Users#indexRansack needs User attributes explicitly allowlisted as
searchable. Define a `ransackable_attributes` class method in your `User`
model, watching out for items you DON’T want searchable (for
example, `encrypted_password`, `password_reset_token`, `owner` or
other sensitive information). You can use the following as a base:
“`![ng.png](https://qiita-image-store.s3.ap-northeast-1.amaz
Sorbetのruntimeチェックを試してみた
SorbetはRubyのシンタックスで書かれているため、型アノテーションの情報を実行時にも保持できます。
(Steepはコメントアウトで型アノテーションを記述するため、実行時には型の情報が捨てられてしまっているようです)これを用いて、実行時に型アノテーションの検査ができるというので、手元で試してみました。
https://sorbet.org/docs/runtime
## Sorbet Runtimeについて
Sorbetは部分的に型チェックを有効化、無効化することが可能です。そのため、型アノテーションを記述しても異なる型の値が渡される可能性があります。
Sorbet Runtimeは実行時に型情報を用いて、アノテーションをチェックすることができます。
これにより、型アノテーションの誤りに気づくことができます。
## 試してみる
まずは型チェックを無効化してプログラムを実行してみます。
“`rb:untyped.rb
# typed: falseclass Untyped
attr_reader :agedef initialize(age:)
顧客側 新規登録
### はじめに
bootstrap導入済
namespases使用
devaice導入
___________
今回の完成イメージです
![スクリーンショット 2023-07-20 19.57.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/230e22b6-61d8-9de0-77b4-00cc2a19a8aa.png)“migrateファイル“
以下のようになってればOK!
足りないものがあれば追加してください。
“`diff_ruby
create_table “customers”, force: :cascade do |t|
t.string “email”, default: “”, null: false
t.string “encrypted_password”, default: “”, null: false
t.string “reset_password_token”
t.datetime “reset_pas
プログラミング半年おにいさんが贈る、プログラミング初学者さんへ
今回はたくさんの人に支えられながらプログラミングを半年やってきた僕が、当時の自分を思い出しながら初学者さんへ向けて、モチベーションなどを少しでも上げてもらえればいいなと思い記事を書かせていただくことにしました!
果たしてどれだけの初学者さんがQiitaを読んでいるかは分かりませんが、少しでも多くの方に役に立っていただければと思います。
いくつか章があるので気になったところだけ読んでください。
ここで言う初学者とは、生まれたてのヒヨコに加えて、生まれようとしているヒヨコも含まれています。
もう成熟したヒヨコには今回のお話はあまり役に立たないかもしれないです。
そしてまた、僕がちょっと歩けるようになったヒヨコに過ぎなくても、それでも良いと言うのならこの先も読み進めてください。
完成した鶏さんがいる場合は、ぜひ僕に餌を与えてください。
## ここで簡単な自己紹介
* プログラミングをやりだして半年ほど経ちました。
* HTML, CSS, Ruby, Pythonをやっています。どれも好きです。
* 開発が大好きで、自分が欲しくなった機能などを作ったり
オブジェクト指向エクササイズをRubyで書いてみる
## 導きの始まり
リーダー
「この新しいチームではオブジェクト指向的にコードを書いていきたい」僕
「…はい! (オブジェクト指向とか意識したことねぇぇ…(´・_・`) )」## オブジェクト指向エクササイズ
[こちら](https://tech-blog.rakus.co.jp/entry/20210916/objectoriented)にすごくわかりやすい説明が載っていたのでまんま掲載します。
>オブジェクト指向エクササイズとは、書籍『ThoughtWorksアンソロジー』で紹介されているオブジェクト指向設計を理解し実際に使えるようになるためのエクササイズです。
>
>オブジェクト指向エクササイズの具体的な方法は、以下に定められた9つのルールを適用してコードを書く、というものになります。
>
>- 1つのメソッドにつきインデントは1段階までにすること
>- else句を使用しないこと
>- すべてのプリミティブ型と文字列型をラップすること
>- 1行につきドットは1つまでにすること
>- 名前を省略しないこと
>- すべてのエンティ
顧客側 Topページ
### はじめに
・bootstrap導入済
・namespace使用
・device導入済今回の完成イメージ
![スクリーンショット 2023-07-20 14.01.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/96407c88-13d4-f5ff-7e15-74a527db05ab.png)
テキストの背景に画像を指定して表示します。
新着商品を4件表示します。
_______### コントローラー
“`public/homes_controller.rb
class Public::HomesController < ApplicationController def top @items = Item.order(created_at: :desc).limit(4) end end ``` @items インスタンス変数に、新着商品の情報を代入しています。具体的には、**Item.order(created_at: :desc).limit(4
新卒エンジニアに捧げる! 新人でも貢献できるコードレビューの方法!
# はじめに
こんにちは。株式会社Relicのみけたです。
Railsのバックエンドエンジニアとして、弊社自社プロダクトの開発・保守に2年半携わっています。おかげさまで弊社も規模が順調に拡大し、今年は新卒エンジニアがなんと11人も入社しました!
キャッチアップをしてもらい、互いに切磋琢磨をしながら会社を盛り上げていきたいと思っております。https://www.wantedly.com/companies/relic/post_articles/503605
そこでその一助になればと、「**コードレビューで協力したいけれども、そもそもコード読むのむずいし、つまらないし、体質に合わない**」というあなたや、「**実装しなくちゃいけないから関係する周辺コードを読んだけれども何も分からないし、つらみがすごくて爆発しそう**」というあなたに向けて、**コードを読む上での方法論**をまとめてみました。(Railsを担当するサーバーサイド向け)
何かの参考になれば幸いです。
# 1. コードが読めない原因を特定しよう
目に前に繰り広がるアフリカの大自然のような大量のコードを眺めて
【Ruby】7の倍数の数値の中に7が何回現れるかをカウントするロジック
Rubyを使ったロジックについて学習しています。
数字に関するお題について、回答し、ロジックを分解して考えていきます。# 問題
7777777以下の7の倍数を全て取り出したとき、数字「7」は何回現れるか?# 回答コード
“`ruby
def count_number(number)
list = []
for i in 1.upto(number) do
if (i % 7 == 0 )
list.append(i)
end
end
list.sum{|i| i.to_s.count(“7”)}
endputs “#{count_number(7777777)}”
“`# 出力結果
“`ter
777784
“`# コードの解説
– このコードは、`1から指定した数値までの中で、7の倍数の数値の中に7が何回現れるかをカウント`するコードである。
– まず、`count_number(number)`っていう関数を定義している。引数には数値が渡されることを期待している。
– 次に、`list = []`で空の配
管理者 商品詳細ページ
### :star2: 管理者の商品詳細ページの作成
bootstrap導入済
namespases使用
_________
### :shamrock:コントローラー作成
アイテムを一つ取得して@item に格納
“`admin/items_controller.rb
ef show
@item = Item.find(params[:id])
end
“`### :shamrock: views 詳細ページ作成
“`erb:abmin/items/show.html.erb商品詳細
<%= image_tag url_for(@item.image), class: 'img-fluid', style: '【Ruby】combinationメソッドで重複のない組み合わせを作る
Rubyを使ったアルゴリズムについて学習しています。
今回はcombinationメソッドを使ったロジックの実装についてまとめました。# やりたいこと
数字(n個)の配列から、重複のない2個の組み合わせを選択するロジックを作成する。# 出力例
“`ruby
n = 6 とした場合の出力例[
[1, 2], [1, 3], [1, 4], [1, 5], [1, 6],
[2, 3], [2, 4], [2, 5], [2, 6],
[3, 4], [3, 5], [3, 6],
[4, 5], [4, 6],
[5, 6]
]
“`# combinationメソッドとは?
今回のロジックは、combinationメソッドを使うことで簡単に作れます。> サイズ n の組み合わせをすべて生成し、それを引数としてブロックを実行します。
h
いいコード悪いコードまとめ6章 条件分岐
# 条件文のネストを早期リターンで避ける
# 条件分岐を一箇所にまとめる
例えば、以下のようにクラスが複数あって、その中で条件に応じて表示を切り替えているコードがある場合、
これでは、抜け漏れがかなり起きやすいようになっています。なぜなら、条件分岐が重複して色々なところに書かれているからです。
“`
# 車のクラス
class Car
def initialize(type)
@type = type
enddef drive
case @type
when ‘sedan’
puts ‘乗用車を運転しています。’
when ‘truck’
puts ‘トラックを運転しています。’
when ‘suv’
puts ‘SUVを運転しています。’
else
puts ‘不明な車種です。’
end
end
end# 自転車のクラス
class Bicycle
def initialize(type)
@type = type
endd
rails –taskしたら便利コマンドが大量にあったので忘備録
“`
rails –tasks
“`
知っているものが大半だが、中には初めて見るものもあるので、ぜひ使ってみたい。
“`
rails about # List versions of all Rails frameworks and the environment
rails action_mailbox:ingress:exim # Relay an inbound email from Exim to Action Mailbox (URL and INGRESS_PASSWORD required)
rails action_mailbox:ingress:postfix # Relay an inbound email from Postfix to Action Mailbox (URL and INGRESS_PASSWORD required)
rails action_mailbox:ingress:qmail # Relay an inbound email fromいいコード悪いコードまとめ9章設計の健全性を損なうさまざまな悪魔たち
# デッドコードは消すこと
到達不能コードともいう# YAGNI原則
You aren’t gonna need it.
必要になるまで先回りして実装する必要はない# マジックナンバーは避けて、定数化しよう
定数化が難しい場面もありますが、基本的にマジックナンバーは避けましょう。# グローバル変数は避けよう
グローバル変数は影響範囲が広すぎるので、必要に迫られるまで使用しないこと。# nullを返さない、渡さない
rubyだとnilですが、`return nil`のはnilチェックしなければならなくなるので、良い書き方ではない。
ついやってしまいがちですが、`EMPTY`という変数を作り、それを返すようにした方がいいです。# rescueの例外処理を忘れずに
rubyだと、begin, raise, rescue, ensureなどで例外処理していくわけだが、rescueを忘れるとただ例外を握りつぶすだけなので意味がない。# 問題検出時にけたたましく叫ばせる
railseなどでエラーが発生した場合は、通知や記録、リカバリ処理、ログへの記録などを実装しよう。#
小数点以下の桁数を指定して四捨五入、切り上げ、切り捨て
Decimal(Big Decimal)のデータを取り扱うとprecisionとscaleの設定値が必要となる。
しかし、こいつの問題はデフォルトで四捨五入をしてしまい、切り捨てに対応していないこと!
面倒だが、before_saveでfloorメソッドを使うしかなかった。そのときに関連のメソッドも気になったので調べて忘備録とする。
# 小数点以下N桁で四捨五入
## .round
roundメソッドは、引数に小数点以下の桁数を渡し、それより下の桁を四捨五入
“`
100.1111.round
# 出力結果 ==> 100100.1111.round(1)
# 出力結果 ==> 100.1100.3399.round(3)
# 出力結果 ==> 100.34
“`# 小数点以下N桁で切り上げ
## .ceil
“`
100.1111.ceil
# 出力結果 ==> 101100.3333.ceil(1)
# 出力結果 ==> 100.4100.3383.ceil(3)
# 出力結果 ==> 100.339100.3399.ceil(3)
# 出力結果erbで関数的にコードの再利用を行う
erbは他言語含め有名なテンプレートエンジンと比較すると特別な構文がとても少ない。
jinja系でいうところのmacro、pugとかでいうところのmixinの機能は最低限ほしいと感じることはないだろうか。
実は特別な構文など用意しなくてもerbではその辺の要件を簡単に満たせる
## macro, mixin的なものが不要な理由
jinja系だとHTML snippetの関数的な再利用方法としてmacroがある
こんな感じだ
“`jinja
{% macro foo(title, content) %}{{ title }}
{{ content }}{% endmacro %}
{{ foo(‘最寄駅について’, ‘大崎駅まで徒歩5分、大崎広小路駅まで徒歩6分です’) }}
“`これをerbで書くとこんな感じで書ける
“`erb
<% foo = lambda do |title, content| %><deviseの導入
https://github.com/heartcombo/devise
公式サイトより、Getting startedを参考にしながらdeviseを導入してみました。gemファイルに追記、bundle installを実行
“`
gem ‘devise’
“`
次に、以下のコードを実行
“`
rails generate devise:install
“`以下のファイルが作成される
“`
create config/initializers/devise.rb
create config/locales/devise.en.yml
“`ファイルを作成すると、ターミナルに以下のようなメッセージが表示される。
“`===============================================================================
Some setup you must do manually if you haven’t yet:
1. Ensure you have defined default ur
RubyでAtCoder ABC231(A, B, C)を解いてみた
# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC231のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。# A – Water Pressure
https://atcoder.jp/contests/abc231/tasks/abc231_a
“`ruby:a-231.rb
puts gets.to_i.fdiv(100)
“`# B – Election
https://atcoder.jp/contests/abc231/tasks/abc231_b
“`ruby:b-231.rb
n = gets.to_i
hash = Array.new(n){ gets.chomp }.tally
puts hash.key(hash.values.max)
“`
## 解説
`tally`メソッドで同じkey同士をくくった後のvalueが最大となるkeyが答えとなります。(`max_by`を使った書き方もできると思います)# C – Counting 2
https:/RubyでAtCoder ABC232(A, B, C)を解いてみた
# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC232のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。# A – QQ solver
https://atcoder.jp/contests/abc232/tasks/abc232_a
“`ruby:a-232.rb
puts gets.split(“x”).map(&:to_i).inject(:*)
“`# B – Caesar Cipher
https://atcoder.jp/contests/abc232/tasks/abc232_b
“`ruby:b-232.rb
s = gets.chomp.chars
t = gets.chomp.charsu = s.zip(t)
k = (t[0].ord – s[0].ord) % 26
puts u.all?{ (_1.ord + k) % 26 == _2.ord % 26 } ? “Yes” : “No”
“`
## 解説
`ord`メソッドと`all?`メ関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた