Ruby関連のことを調べてみた2022年11月16日

Ruby関連のことを調べてみた2022年11月16日

while文

# はじめに
while文を勘違いして覚えてしまったため、改めて覚え直すために記事に残す。

## while文

while 条件式 do
実行する処理
end

条件式を満たす(true)間は処理が続く

元記事を表示

[Ruby] if、elseを用いた処理

# はじめに
rails初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

# 指定された範囲の数値によって処理が異なるプログラムの実装
以下の要件を満たす、parrot_troubleメソッドを実装していきます。

最近、あなたはオウムを飼いはじめました。しかし、近隣から「夜にオウムの鳴き声がうるさい」と苦情がくるようになりました。あなたはこれをシステムで解決しようと考え、次のようなプログラムの要件を考えました。

・第一引数にオウムが鳴く場合はtrueを指定し、鳴かないfalseを指定する
・第二引数には時間を指定する(ただし、「分」は考えないものとする)
・20時から翌朝7時までの間にオウムが鳴いた場合は「NG」と出力する(20時と7時は含まれない)
・上記以外の場合は「OK」と出力する

# 雛形
“`ruby
def parrot_trouble(talking,

元記事を表示

randメソッド

# はじめに
乱数の実装をする際に必要な知識を忘れないために記録に残す

## randメソッド
randメソッドで乱数を実装することができます。

# 使い方
rand(欲しい乱数の数)
randメソッドを使うと手軽に乱数を生成できます。randメソッドに引数として数を渡すと「0」から「渡した数 – 1」の間でランダムに数を返します。

rand(100) # => 0〜99の中から1つ整数をランダムに返す

rand(1..5) # => 1~5の中の整数を返す

元記事を表示

[Ruby]偶数値の取得するメソッドの作成

# はじめに
rails初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。
# even?メソッド
Rubyが元々用意しているメソッドで、対象の数値が偶数かどうか判断するメソッドになります。

“` even?.rb
10.even?
#=> true

5.even?
#=> false

“`
このように値が真の時、tureを返し、偽の時、falseを返します。
# 偶数値が取得できるメソッドの作成

“` even?.rb
count_evens([2, 1, 2, 3, 4]) → 3
count_evens([2, 2, 0]) → 3
count_evens([1, 3, 5]) → 0
“`
このように出力できるメソッドを作成していきます。

“`even?.rb
def count_evens(nums)
count = 0
nums.each

元記事を表示

railsチュートリアル中にHerokuの無料期間が終わることが分かり、Herokuからrender.comに気合いで移行した話

## 概要
タイトル通り
5章やってたら突然無料終わります言われて泣いちゃった
## 対応内容
下記様を参考にデプロイ手前まで作業完了。
[Render.comでRailsアプリの本番環境を作成する方法をどこよりも優しく伝える!](https://qiita.com/ysk91_engineer/items/b7db950f4739fa896f57)
[Render.com公式](https://render.com/docs/deploy-rails)

設定をしていくうち、`config/master.key`が必要とわかる。
その際、現在の`Gemfile`のrailsのバージョンではダメなことが分かり。
以下の様に`Gemfile`を設定変更
“`ruby
source ‘https://rubygems.org’

ruby “2.6.8” #念のためrender.comがこのバージョンの為、変更

gem ‘rails’, ‘= 6.0.3.2’ #updateしたら怒られたので怒られた通りに変更
gem ‘bootstrap-sass’, ‘3.3.7’

元記事を表示

ajax通信を用いて非同期でコメント機能を実装する

ほとんど私が書くことはないのですが、こことここの記事を参考にさせていただいたら簡単に実装できたよ!
ということで備忘録。
ajax通信を用いて非同期でコメント機能を実装するには、こちらの方のページが私にはとてもわかりやすかったです。(コメント欄も参考にされてください)
https://qiita.com/miyazaki_yusuke/items/dd1c053851a042cae893

そして、コメント欄も含めて余さず実行したけどうまくいかないぞ・・・?と思った時に、「そうだ!jQueryの実装してない!」となり外部検索でgemがあることを知り導入。けどうまくいかない。のでさらに検索したところ、こちらの方の記事で救われました。
https://qiita.com/tatsuhiko-nakayama/items/b2f0c77e794ca8c9bd74

素晴らしい方がたくさんいてよかった・・・
先人の方の知恵は偉大です。

元記事を表示

Railsで下書き機能の作成を行った

今回はRailsで下書き機能の作成ついて紹介します。

### displayカラムの追加

今回は下書き記事かどうかを判断するために、displayカラムを追加します。
add columnコマンドなどを使ってみます。

“`ruby
#db/migrate/20220928135436_add_coumuns_to_posts.rb
class AddCoumunsToPosts < ActiveRecord::Migration[6.1] def change add_column :posts, :display, :string end end ``` そしてmigrateします。 ```ruby rails db:migrate ``` 次にコントローラーを記述します。 内容としては、1だったときは、0にし、elseだと逆に処理をします。 0が下書き、1が投稿です。 ```ruby #posts_controller.rb def draft @post = Post.find(params[:id]) if @post.d

元記事を表示

【Ruby on Rails】pry-rails導入方法

## pry-railsの導入方法

### Gemfileを編集
Gemfile最終行に以下を追記
“`ruby:Gemfile
gem ‘pry-rails’
“`

### ターミナル実行
“`terminal:ターミナル
bundle install
“`

#techcamp136期

元記事を表示

【Ruby on Rails】Deviseの導入方法

## Deviseの導入方法

### Gemfileを編集
Gemfile最終行に以下を追記
“`ruby:Gemfile
gem ‘devise’
“`

### ターミナル実行
“`terminal:ターミナル
bundle install
“`

### deviseの設定ファイルを作成
“`terminal:ターミナル
rails g devise:install
“`

### Userモデルを作成
“`terminal:ターミナル
rails g devise user
“`

### テーブルを作成
「db/migrate/20XXXXXXXXX_devise_create_users.rb」ファイルに必要なカラム情報を追記のうえ以下を実行。
“`terminal:ターミナル
rails db:migrate
“`

### ビューファイルを作成
“`terminal:ターミナル
rails g devise:views
“`

#techcamp136期

元記事を表示

RuboCopで見つけられたバグ Lint/UnreachableLoop

# 最初に

古いRubyライブラリのコミット権限を貰ったのですが、
それがRuboCopにたくさん注意されてました。

自動で直せるところは自動で直しましたが、
それでもあまりに注意されてるので、
優先順位の低いものは`Enabed: false`で止め、
すぐ直せるところはすぐ直しました。

そうすると、残ってしまったCopがあります。
`Lint/UnreachableLoop`です。それについて書きます。

# `Lint/UnreachableLoop`

“`console
RuboCop warned:
W: Lint/UnreachableLoop: This loop will have at most one iteration.
“`

「未到達のループ: このループは多くても1回の繰り返しでしょう。」
バグっぽいですし、バグっぽいと思いましたが、バグでした。

“`ruby
def foo
@array.each do |e|
(中略)
return ans
end
end
“`

わかりやすく書くと、こんな感じです。
実際には

元記事を表示

[Ruby] Enumerable#chunk{,_while}、Enumerable#slice_{before,after,when} の違い

:::note info
これは2016年くらいに **るりま**[^rurema]を見て書いたメモです。今のるりまは充実していて、嬉しいです。下記の内容は現在の Ruby でも変わっていないので自分用に投稿します。
:::

[^rurema]: https://docs.ruby-lang.org/ja/latest/class/Enumerable.html

ruby の Enumerable モジュールには、似たようなメソッド

* chunk
* chunk_while
* slice_before
* slice_after
* slice_when

があります。

このうち、chunk_while、slice_after、slice_when は Ruby 2.3 から使用可能です。

## 形式

* `chunk {|elt| key } -> Enumerator`
* `

元記事を表示

Railsでenum使用時にsyntax error, unexpected local variable or method, expecting =>

# 環境
* Ruby3.1.2
* Rails6.1.7
# 問題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729380/0ed233ae-e117-d8b3-e49f-02ea8e1408a5.png)
Railsでアプリ作成中にenumを使っていてmodelにenumの記述を加えて動作確認しようとしたらエラーが出た。解決策がわからず、検索しても記事が出てこなかった。
# 解決方法
## 解決方法①
“`diff_ruby
– enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
# 数字を半角から全角に変更
+ enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
“`
とすると![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729380

元記事を表示

【Rails】Twitterクローンを作ってみた 〜コメント機能の作成〜

## はじめに
[【Rails】Twitterクローンを作ってみた 〜ツイート機能編〜](https://qiita.com/bloom__fu/items/975432a9aae39dae958f)の続きです。こちらを前提に進めていきますので、まだご覧になっていない方はそちらからご覧ください!※こちらはdockerでの環境構築を省きます。
## サービス環境
– ruby 3.0.0
– Rails 6.0.4
– docker
– mysql 8.0.2
– Slim, SCSS

## コメント機能作成
#### 条件
– TweetをクリックでそのTweetのコメントが見られる(コメントページ)
– コメントページの「コメント」をクリックでコメント新規作成に遷移できる
– コメントを投稿するとコメントページにリダイレクト
コメントモデルの作成し、Userモデル, Tweetモデルとコメントを関連付けさせてください。コメントもTweet同様140文字までとします。また、コメントモデルのテキスト部分のカラム名はtextとしてください。
#### 実装流れ(簡略)
① Userモデル

元記事を表示

Rails7をDockerfileとdocker-composeを使って立ち上げる

Ruby on Rails7を簡単に立ち上げるファイル群をGithubにあげました。

DockerでRailsのイメージを使うのが一番簡単な方法ではありますが、イメージの方に色々入れたい派の人間なので、昔ながらのDockerfileとdocker-composeを使います。

ということでDockerの環境があれば、以下のファイルをClone→実行することでRailsのスタートページを簡単に立ち上げることができます。

手順は以下の通りです。

1. もってくる
“`
$ git clone https://github.com/hatoPoPoPoPo/rails7.git
“`

2. ディレクトリ移動
“`
$ cd rails7/
“`

3. Docker Buildを実行
“`
$ docker-compose build –no-cache
“`

4. コンテナ起動
“`
$ docker-compose up -d
“`

5. DBの作成

“`
$ docker-compose run –rm rails rake db:create

元記事を表示

floorメソッド

# はじめに
floorメソッドの存在を知っておくための議事録です。

## floorメソッドとは
小数点の切り捨てを行うメソッド。
.to_f(整数を小数にするメソッド)のfもfloorの略と考えられる。
以下使い方。

irb(main):001:0> 3.1.floor
=> 3
irb(main):002:0> 3.9.floor
=> 3

元記事を表示

Timeメソッドについて

# はじめに
Rubyの標準ライブラリであるTimeメソッドについて忘れないように記録に残す。

## Timeメソッドとは
TimeクラスはRubyの標準ライブラリにあり、時刻を表すクラスです。
以下のように利用します。

# 現在時刻
time = Time.new
p time
p time.year #年
p time.month #月
p time.day #日
p time.hour #時
p time.min #分
p time.sec #秒
p “曜日番号:#{time.wday}” #日曜日を0とした曜日番号
p “timeの年の1月1日から何日経過したか:#{time.yday}” #timeの年の1月1日から何日経過したか
p “タイムゾーンの確認:#{time.zone}” #タイムゾーンの確認

# 実行結果
2017-07-24 16:47:04 +0900

元記事を表示

【Ruby on Rails】RSpecでのモデル作成方法

### ターミナル実行

“`terminal:ターミナル
rails g rspec:model モデル名
“`
例えば、
>rails g rspec:model user

など。

#techcamp136期

元記事を表示

【Ruby on Rails】Factorybotでのインスタンス生成方法

### フォルダーの作成
「spec」フォルダー内に「factories」フォルダーを作成

### ファイルの作成
「factories」内に「モデル名(複数形).rb」ファイルを作成。

例えば、
>「spec/factories/users.rb」

### ファイルに以下記載

以下、例
“`ruby:spec/factories/users.rb
FactoryBot.define do
factory :user do
name {Faker::Name.last_name}
email {Faker::Internet.free_email}
password {Faker::Internet.password(min_length: 6)}
password_confirmation {password}
end
end
“`

#techcamp136期

元記事を表示

【Ruby on Rails】RSpecの導入方法

# RSpecの導入方法

### Gemfileに追記

GemfileにRspec, Factorybot, Fakerを追加するための記述を追記。
この時、:test do ~ endの間に追記することに注意。

“`ruby:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
#ここに以下3行を書き足す
gem ‘rspec-rails’, ‘~> 4.0.0’
gem ‘factory_bot_rails’
gem ‘faker’
end
“`

### ターミナル実行

ターミナルで以下を実行。
“`terminal:ターミナル
bundle install
rails g rspec:install
“`

以下の実行結果が表示される。
specフォ

元記事を表示

TRICK2022(超絶技巧Ruby意味不明コンテスト for RubyKaigi)で金賞を獲得されたプログラム(Quine)を動かしてみました ーー 高校生向けプログラミング講座「福岡県Rubyキャンプ」にて

# はじめに

TRICK2022(超絶技巧Ruby意味不明コンテスト for RubyKaigi)で金賞を獲得されたプログラム(Quine)を動かしてみます。

動かしてみたきっかけとなったのは、福岡県Ruby・コンテンツビジネス振興会議さんと福岡県さんが主催された「[高校生向けプログラミング講座「福岡県Rubyキャンプ」](https://www.pref.fukuoka.lg.jp/press-release/ruby-camp2022.html)」にて、コーチとして参加したことです。詳しくは後述します。

OTHERカテゴリの最新記事