- 1. while文
- 2. [Ruby] if、elseを用いた処理
- 3. randメソッド
- 4. [Ruby]偶数値の取得するメソッドの作成
- 5. railsチュートリアル中にHerokuの無料期間が終わることが分かり、Herokuからrender.comに気合いで移行した話
- 6. ajax通信を用いて非同期でコメント機能を実装する
- 7. Railsで下書き機能の作成を行った
- 8. 【Ruby on Rails】pry-rails導入方法
- 9. 【Ruby on Rails】Deviseの導入方法
- 10. RuboCopで見つけられたバグ Lint/UnreachableLoop
- 11. [Ruby] Enumerable#chunk{,_while}、Enumerable#slice_{before,after,when} の違い
- 12. Railsでenum使用時にsyntax error, unexpected local variable or method, expecting =>
- 13. 【Rails】Twitterクローンを作ってみた 〜コメント機能の作成〜
- 14. Rails7をDockerfileとdocker-composeを使って立ち上げる
- 15. floorメソッド
- 16. Timeメソッドについて
- 17. 【Ruby on Rails】RSpecでのモデル作成方法
- 18. 【Ruby on Rails】Factorybotでのインスタンス生成方法
- 19. 【Ruby on Rails】RSpecの導入方法
- 20. TRICK2022(超絶技巧Ruby意味不明コンテスト for RubyKaigi)で金賞を獲得されたプログラム(Quine)を動かしてみました ーー 高校生向けプログラミング講座「福岡県Rubyキャンプ」にて
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?
#=> true5.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)」にて、コーチとして参加したことです。詳しくは後述します。
先月、TRICK2022(超絶技巧Ruby意味不明コンテスト for RubyKaigi)で金賞をとってきたプログラム(Quine)です。
全てのフレームが、魚達がその場所から泳ぎを再開する実行可能なRubyのコードになっています。
魚・水草・泡でコードの一部が欠落していますが、誤り訂正により復元しています。関連する記事
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関連のことを調べてみた