- 1. [Ruby]スキルチェックC練習問題 Fizz Buzz
- 2. Rails 個人的に覚えておきたいコマンド【初心者】
- 3. コントローラ作成~取り消し
- 4. モデル作成~取り消し
- 5. migrate~取り消し
- 6. Railsでブログシステムを作りたいPart1
- 7. collection_select
- 8. Railsアプリに隠しコマンド・隠しページを実装してみる
- 9. Docker上のRuby on Rails 6をVisual Studio Codeでデバッグするまでの手順
- 10. Railsチュートリアル 第7章 リスト7.23のテストでArgumentError: wrong number of arguments (given 2, expected 1)
- 11. 配列.each do |変数|の使い方
- 12. returnとputsの違い
- 13. 【転職】Web系エンジニアに憧れるSIerの下僕
- 14. NoMethodErrorを解決した話 (Railsチュートリアル )
- 15. Ruby 問題14 特定の文字列を検知する include?メソッド
- 16. [Ruby]paizaのスキルチェックD 文字の一致
- 17. [Ruby on Rails] N+1問題の解決法(joinsメソッド+groupメソッド編)
- 18. 正規表現 基本まとめシート
- 19. エラー解決 Did you mean?に惑わされないように
- 20. 【Rails】bundle installができない時の解決方法
- 21. テストコード データ型の注意点
- 22. ransackで入力した値が、営業時間内か検索する。
- 23. ド忘れしていたRubyの基礎5選④
[Ruby]スキルチェックC練習問題 Fizz Buzz
https://paiza.jp/works/mondai/skillcheck_sample/fizz-buzz
Fizz Buzz (paizaランク C 相当)
C問題に挑戦してみました!
こちらはスキルチェックの見本問題なので、コードの公開等は自由だそうです。私の解答コード↓
“`
input_line = gets.to_ifor i in 1..input_line
if i%15==0
puts”Fizz Buzz”
elsif i%3==0
puts”Fizz”
elsif i%5==0
puts”Buzz”
else
puts i
end
end
“`まず最初に標準入力で与えられた数字まで、順に数字を出力するように記述し、それからif文を入れていきました。
(プログラミングはまず小さいところから、、でしたっけ…?)“`
input_line = gets.to_i
与えられた文字まで、1ずつ出力する。for i in 1..input_line
puts i
end“`
ちなみにp
Rails 個人的に覚えておきたいコマンド【初心者】
##操作取り消し系
コントローラ作成~取り消し
コントローラ作成 ※例
“`rails generate controller StaticPages home help“`
取り消し ※上記で作成された関連ファイルもすべて削除される。
“`$ rails destroy controller StaticPages home help“`モデル作成~取り消し
モデル作成※例
“` $ rails generate model User name:string email:string“`
取り消し※カラム名の指定は不要
“` rails destroy model User“`migrate~取り消し
migrate実行
“`$ rails db:migrate“`
1つ前に戻す
“`$ rails db:rollback“`
最初の状態に戻す
“`$ rails db:migrate VERSION=0“`
Railsでブログシステムを作りたいPart1
#1.なぜやるのか
・Web系企業に未経験で転職し一ヶ月たち、技術書インプットメインの自己研鑽に飽きた(とゆうか身についてない感じがした)
・もともとブログを運営したいと思っていたが、せっかくならWordPressを使わない(会社でつかっているRails)でやりたい
というモチベーションです。そのため、Railじゃないと実現できない機能があるから使うわけではなく、あくまでもRailsを勉強したいというのが先行しています。
#2.実現したいシステム
###概要
旅行先や飲食店、遊んだ場所を紹介するブログを作りたいと思っています。
想定読者は日本人と台湾人です。僕の彼女が台湾人なので台湾中国語対応のブログにしたいと思っています。###欲しい機能
・日本地図や台湾地図で記事をソート
・地図表示
・2ヶ国語対応
・リッチテキストエディター
・バックヤード(管理者画面)
・pc+sp対応
等々#3.開発環境(予定含む)
ruby 3.0
rails 6.1.3
MySQL
AWS(本番環境インフラ)←まだちゃんと調べてないのでざっくりです
bootstrap
rspec
ci
collection_select
collection_selectのメソッドを使うことでデータをプルダウンを表示させることができる。
引数が第一から第五までありそれぞれの役割は以下の通り。第一引数に保存したいカラム名を記述。
第二引数に配列データを指定する。(この際、クラス名の命名規則があるのでアッパーキャメルで記述)
第三引数に表示する際に参照するカラム名を記述。
第四引数に実際に表示させたいカラム名を記述
第五引数にオプションの指定。(include_blankという値のない選択肢を先頭にするオプションもある)記述方法の例としては以下の通り。
“`ruby
<%= form.collection_select(保存されるカラム名, オブジェクトの配列, カラムに保存される項目, 選択肢に表示されるカラム名, オプション, htmlオプション) %>
“`実際に記述したコードは以下の通り。
例えば発送地域などを表示させたい場合はまずモデルにプルダウンに表示させたい情報を記述。“`ruby
class DeliveryArea < ActiveHash::Base self.data =
Railsアプリに隠しコマンド・隠しページを実装してみる
## 概要
Railsアプリを作っている際、特定のコマンドを知っている人だけが辿り着けるページみたいなものがあれば面白いなと思い調べてみたところ、JavaScriptを上手く使えば実装できる事がわかったので試してみました。
実運用できるレベルかどうかは別として完全に遊び心みたいな感じです。(URLを直打ちすれば普通に飛べちゃうみたいな野暮なツッコミは無しでお願いします(笑))
## 完成イメージ
![マイ-ムービー(7).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/3444aa18-c61b-b48c-0a1e-54adb58f1077.gif)
今回はかの有名な [コナミコマンド](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%8A%E3%83%9F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89) (上上下下右左右左BA)を入力した場合、隠しページにつながる導線をアラートメッセージで表示するような仕組み
Docker上のRuby on Rails 6をVisual Studio Codeでデバッグするまでの手順
# 必要なもの
Docker Desktop
Visual Studio Code今回の作業環境は以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82535/d4e8146f-3f4d-43ad-d6a7-e59104c4f379.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82535/a02cbc08-1e97-42df-32e1-19ee2df46c47.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82535/d56993c8-04d5-2630-75e5-a13124e19934.png)
# Docker ファイルを作成
“`dockerfile:Dockerfile
FROM ruby
RUN apt-get update
Railsチュートリアル 第7章 リスト7.23のテストでArgumentError: wrong number of arguments (given 2, expected 1)
# はじめに
Railsチュートリアル7章のリスト7.23のテストで
`ArgumentError: wrong number of arguments (given 2, expected 1)`
とエラーが出たので、解決した方法をまとめておきます。自分の環境
– ryby: 3.0.1
– rails: 6.1.3.2## エラーが出た原因
ruby3.0以上を使っていると、キーワード引数の書き方が変わったため、書き方の問題でひっかかったぽいです。## エラーがでたコードとエラーメッセージ
“`ruby
require ‘test_helper’class UsersSignupTest < ActionDispatch::IntegrationTest test "invalid signup information" do get signup_path assert_no_difference 'User.count' do post users_path, params: { user: { name: "",
配列.each do |変数|の使い方
配列 = [1,2,3・・・・]
配列.each do |変数|
puts 変数
end配列を定義してから、それひとつずつ実行していくイメージ
returnとputsの違い
## return と putsの違い
どちらも文を表示させる機能だが、メソッドを終了させるかどうかという点が異なる。## return
・メソッドから脱出できる
・戻り値を受け取るだけ(putsしないと表示されない)## puts
・メソッドを終了させない## returnを使うとdefから脱出できる
“`
def condition(money = “”)
return “お金がない” if money.empty?
“お金持ち”
end
puts condition(“”)
“`## returnを使わないとdefから脱出できない
“`
def condition(money = “”)
“お金がない” if money.empty?
“お金持ち”
end
puts condition(“”)
“`
最後の文だけが機能するため、どんな値を入れても「お金持ち」しか表示されない##selfの重要性
selfを用いた場合“`
class Menu
attr_accessor :name
attr_accessor :price
【転職】Web系エンジニアに憧れるSIerの下僕
まじで新卒で中小SIerに6年勤めてきましたがもうそろそろ限界です。手に職付けるってことと自分がマネジメント職向いてないなと思うことからWeb系エンジニアに転職しようと思いたちました。
ちなみに技術力はほぼ皆無でVB.NETちょこっとかけるくらい。SQLは普通くらい。
明日やろうは馬鹿野郎という言葉がありますが無視して2021/07/01から勉強始めます。
とりあえずまずはProgateから初めて2周くらいしたらRubyの参考書買おうかなと思ってます。
絶対転職するぞ!!
NoMethodErrorを解決した話 (Railsチュートリアル )
Qiita初投稿です。宜しくお願いします。
今回は、NoMethodErrorの解決にかなりの時間を費やしてしまったので、紹介していこうと思います。**エラー文**
=
“`
NoMethodError (undefined method `log_in’ for ~~~~~)
“`**原因**
=
ApplicationコントローラにSessionヘルパーモジュールを読み込む際に、
helloメソッドに書き込んでしまっていたので、正常に動作していなかった。正)
“`application_controller.rb
class ApplicationController < ActionController::Base include SessionsHelper end ``` 誤) ```application_controller.rb class ApplicationController < ActionController::Base def hello include SessionsHelper end end ```
Ruby 問題14 特定の文字列を検知する include?メソッド
#問題
以下の要件を満たすcheck_nameメソッドを実装して下さい。
* 名前を入力すると「登録が完了!」という文字列を出力すること
* 名前の中にピリオド(.)がある場合は、「 “記号は登録できません”」という文字列を出力すること
* 名前の中に空白(全角のみ)がある場合は、「 “全角空白は登録できません”」という文字列を出力すること“`.rb
def check_name(str)
# 処理
endputs “登録したい名前を入力してください(例)SuzukiTaro”
str = gets
check_name(str)
“`#ヒント
**include?メソッド**
include?メソッドは、指定した値が配列や文字列内に含まれているかを判定するメソッドです。指定した値が含まれている場合はtrueを、含まれていない場合はfalseを返り値として返します。[公式リファレンス](https://docs.ruby-lang.org/ja/latest/method/String/i/include=3f.html)
#解答
“`.rb
[Ruby]paizaのスキルチェックD 文字の一致
https://paiza.jp/works/mondai/skillcheck_sample/diff_str
文字の一致 (paizaランク D 相当)に挑戦しました。
今回は簡単だと思ったのですが、問題文を見落としていたため、少し苦戦しました。”入力値最終行の末尾に改行が1つ入ります。”これを見落としており、
chompの記載が抜けておりました。正解したコードは以下の通りです。
“`
a = gets.chomp
b = gets.chompif a==b
puts”OK”
else
puts”NG”
end“`
模範解答コードでは、if文ではなく、下記のようにコンパクトに記述していました。
“`
puts a == b ? ‘OK’ : ‘NG’“`
練習問題は終わりなので、実際にスキルチェック問題に挑戦したいと思います。
[Ruby on Rails] N+1問題の解決法(joinsメソッド+groupメソッド編)
# はじめに
今回ポートフォリオ(以後PF)制作で、
日本各地の名所を投稿できるサイトを制作しました。実際に製作したサイトと、コード(GitHub)は下記のURLからご覧ください。
・サイトURL : https://japansiteinfo.com (今後予告なく公開停止する場合があります。ご了承ください。)
・GitHubのURL : https://github.com/yuta-pharmacy2359/dwc_JapanSiteInfo_app今回は前回から引き続き「N+1問題」に関して、includesメソッドで解決できないものについて
`joinsメソッド`および`groupメソッド`を用いた解決法を紹介したいと思います。# 本題
### 1. 前回のおさらい&今回扱う問題
前回の記事(https://qiita.com/yuta-pharmacy2359/items/cf30a20fbea9347c0b72) では、`includesメソッド`で「N+1問題」を解決できない以下の6機能のうち、
**・(ユーザー詳細画面における)1人のユーザーが獲得
正規表現 基本まとめシート
正規表現を使う際、調べながら取り組みますが、毎回複数ページを行き来してしまうため、今後すぐ取り出せるようリストアップしました。
#### 環境
– Ruby
– scanメソッドの引数に正規表現を使用して検索が可能
– gsubメソッドの第一引数に変換前、第二引数に変換後の文字列または正規表現を用いることで置換が可能
– [Rubular](https://rubular.com/)### メタ文字
– `\d` : 1個の半角数字
– = [0-9]
– `\w` : 1個の半角英数字とアンダースコア
– = [a-zA-Z0-9_]
– `\t` : タブ文字
– `\n` : 改行文字
– `\s` : 空白文字全般
– 言語・環境によって含まれる文字が異なるので注意
– Ruby : [ \t\r\n\f](半角スペース、タブ文字、復帰文字、改行文字、改ページ)
– `\ ` : エスケープ文字
– `\\t` : タブ文字ではなく、「\t」という文字列を意味する– `{n,m}` : 直前の文字がn個
エラー解決 Did you mean?に惑わされないように
朝活の時、遷移できていたページに遷移できなくなった。
原因はGitHubでブランチを誤って削除してしまったためイチから。![IMG_8504.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1678154/eb0c8a0d-50dd-cf4c-d9cb-5afeb2fa5d2f.jpeg)
上記のエラー文が出てきたがパスは絶対に間違っていないと確信があったので
rails routesでパスの確認。![IMG_8507.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1678154/be1656b5-ea7c-c492-c3ed-402643a18313.jpeg)
案の定パスが消えていたので今朝、朝活でご一緒にさせていただいている方から教えていただいた内容を
無い脳みその記憶を辿ること5分…先ずコントローラーのにアクションを記述する必要がある。
ここで必要なアクションはnewアクションとcreateアク
【Rails】bundle installができない時の解決方法
超初心者向けです。
gemをインストールする際に`bundle install`を実行した時の、エラーの解決方法を紹介します。##エラー内容
“`ruby:ターミナル
Fetching source index from https://rubygems.org/
Retrying fetcher due to error (2/4):
Bundler::HTTPError Could not fetch specs
from https://rubygems.org/
Retrying fetcher due to error (3/4):
Bundler::HTTPError Could not fetch specs
from https://rubygems.org/
“`
bundle install を実行しところ、随分待たされた挙句に上記のエラーが発生。##試したこと
“`
gem update –system
“`
私の場合、試してもエラーが発生。
大体は解決するそうですが、、、##解決方法
PCを再起動、もしくは、通信環境が良いところで再度チャ
テストコード データ型の注意点
単体テストコードの記述の注意点。
“`ruby
first_name_kana_full_width { ‘タナカ’ }
last_name_full_width { ‘太朗’ }
last_name_kana_full_width { ‘タロウ’ }
birthday { 1955_01_01 }
“`
最初はこのような記述をしコミット、プッシュしていたがレビュワーの方から
生年月日(birthday)はデータ型なので値をクォーテーションで囲む必要があるとのことだった。
以下のように修正するとテストを実施する際に今まで問題なくできていた
テストコードの部分でエラーがターミナルで発生…“`
errors: Birthday can’t be blank
“`しかし付随するusers.rbの記述には以下のように記述しておりエラーの原因が分からなかった。
“`ruby
FactoryBot.define do
factory :user do
name { ‘田中tanaka’ }
email {Faker::Inter
ransackで入力した値が、営業時間内か検索する。
#はじめに
現在デートスポットのレビューサイトを作成中です。
検索した時間が、営業時間内に入っていれば表示する検索機能を実装しようとしたら、なかなか実装できませんでした。
その実装方法を記事にしてみようと思います。#modelの概要
“`
create_table “date_spots”, charset: “utf8mb4”, collation: “utf8mb4_0900_ai_ci”, force: :cascade do |t|
t.integer “genre_id”
t.string “name”
t.datetime “opening_time”
t.datetime “closing_time”
t.datetime “created_at”, precision: 6, null: false
t.datetime “updated_at”, precision: 6, null: false
end
“`
始業時間(opening_time)と終業時間(closing_time)がデートスポットごとに決
ド忘れしていたRubyの基礎5選④
どうも、三町哲平です。
https://qiita.com/TeppeiMimachi/items/a0a449a1d2f0897fa6e2
ド忘れしていたRubyの基礎5選の第4弾です。
今回は、コチラの問題を解く際を想定
[Reverse Integer – LeetCode](https://leetcode.com/problems/reverse-integer/)解き方は、コチラを参照
[Ruby Solution – LeetCode Discuss](https://leetcode.com/problems/reverse-integer/discuss/337885/Ruby-Solution)# 1. 後置if
“`ruby
# 普通のif文
if foo
bar
end# 後置ifを使ったif文
bar if foo
“`
可読性の観点からも後置ifの多様には注意が必要です。引用及び参考記事:[【Ruby】乱用厳禁!?後置ifで書くとかえって読みづらくなるケース – Qiita](https://qiita.com/jnchito