- 1. はじめに
- 2. はじめに
- 3. ヘルパーメソッドを使うメリット
- 4. 初めまして見習い駆け出しエンジニアです。
- 4.1. まずこれから使っていく教材
- 4.1.1. 配列内の数字の合計(同じ数字を除く)
- 4.1.2. 【Rails】コメントの編集, 削除機能実装(form_with)
- 4.1.3. Ruby 練習問題5 ~ if → unlessへの書き換え ~
- 4.1.4. Ruby 二重ハッシュの取り出し
- 4.1.5. google-cloud-firestore v2.7.0 はぶっ壊れている
- 4.1.6. 【Rails】フォロー・フォロワー機能
- 4.1.7. 仮想環境VirtualBox(Ubuntu20.04)でRails環境構築
- 4.1.8. マイグレーションファイルを修正する方法
- 4.1.9. hashの復習
- 4.1.10. [Ruby] 複数行テキストのセル・空白行が含まれるCSVから正確な件数を取得する
- 4.1.11. Ruby3.1を触ってみる(debug)
- 4.1.12. mysqlやAWSの本番環境に接続しようとした時、Permission denied (publickey)
- 4.1.13. map(&: ~ )の(&:)とはなんなのか
- 4.1. まずこれから使っていく教材
ruby returnの返り値が複数の場合
はじめに
メソッド内の処理後、返り値が複数になる場合はどうなるのか気になったので調査し、検証してみました。
returnを使わない場合の返り値
“`test.rb
def return_test(value)
sum_a = 5
sum_b = 10
sum_c = 15
sum_a *= value
sum_b *= value
sum_c *= value
endvalue = 10
x = return_test(value)
puts x
“`
結果
“`
=> 150
“`
:::note warn
メソッドの最後の処理結果しか返ってこない
:::returnで返り値を複数指定した場合
“`test.rb
def return_test(value)
sum_a = 5
sum_b = 10
sum_c = 15
sum_a *= value
sum_b *= value
sum_c *= value
return sum_a,sum_b,su
rails ヘルパーメソッドを使ってviewファイルを整える
はじめに
ヘルパーメソッドを自分で定義することについて学んだので学習したことをまとめて記述していきます。
ヘルパーメソッドを使うメリット
railsでビューファイルに対して行われる処理に関して繰り返して使用するようなメソッドはヘルパーメソッド(ビューファイルに対して使用するモジュール)を自分で定義して使用するとビューファイルの可読性を良くすることができ、また保守などの面から見ても修正しやすくなるメリットがある。
___
メッセージの投稿機能があるWEBアプリケーションでそのメッセージを一覧でメッセージテキストと投稿者を表示したい時などを想定してビューファイルを下記のように作成した場合:::note warn
ヘルパーメソッド使用前
:::
“`app/views/messages/index.html.erb<%= @messages.each do |message| %>
<%= message.text %>
<% end %>“`
:::note i
【Rails】初学者向け_基礎のみを活用しチャット機能を作る方法
## 1.バージョンを確認しましょう!
Rails 5.1.6
ruby 2.7.2p112## 2.完成イメージ
ログイン済みのユーザーで一つのチャットルームを共有し、交流できる機能です。
同じ名前のグループは作成できないようにしてあります。
ぜひclosedな環境でグループを作成し、お話してみてください(^_^)v## 3.実装の大きな流れ
>1.グループチャット機能に必要なModel、Controller、Viewの実装
>2.グループ系モデルとUserモデルの紐付け
>3.ちょっとしたフロントエンドデザインちなみにUserモデルは既に作られている前提で記事を書いています。
筆者はdeviseというgemを使ってUser周りを整えております。ちなみに本記事はこのような目次で進んで行きます!
一緒に楽しんでいきましょう ᕙ( ˙꒳˙ )ᕗ## 4. 必要ファイルを作成しましょう
“`ターミナル
$ rails g controller groups #groups_controller.rbを作成
$ rails g controller cha
【Rails】お問合せフォームの実装
こんにちは!
この記事では、railsで **「お問い合せフォーム」** を実装していきます!
これは、お問い合せフォームを送信すると、設定したメールアドレス宛にお問い合せ内容が送信される機能です。# ゴール
railsで「お問い合せフォーム」を実装し、gmailにお問合せ内容が届くようにすること。### 完成イメージ1 (お問合せフォーム)
![スクリーンショット 2022-07-17 1.13.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820462/7f56cc29-f213-c206-476d-8734af657f77.png)### 完成イメージ2 (設定したGmailにお問合せが届く)
![スクリーンショット 2022-07-17 1.19.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820462/189dc51a-1d31-8753-52f8-8de308853cfc.png)
Method#to_procを利用して、ブロックを省略する方法
以下の`&method`部分の意味が分からなかったので調べてみました。
“`ruby
[‘foo’, ‘bar’, ‘baz’].each(&method(:puts))
“`今回理解したいコードはこちらです。
“`ruby
class Hoge
def positive_even_list
even_filter(list)
.then(&method(:positive_filter))
enddef list
[10, -5, 0, 21, -30]
enddef even_filter(list)
list.filter(&:even?)
enddef positive_filter(list)
list.filter(&:positive?)
end
endHoge.new.positive_even_list
# => [10]
“`## まとめ
– Procオブジェクトの前に`&`プレフィックスをつけると、ブロックとして扱われる
– Procオブジェクトでは
初めてのRailsチュートリアルに挑戦!第4・5章
# 第4章の学習内容
1. 組み込みヘルパー
1. カスタムヘルパー
1. 文字列
1. オブジェクトとメッセージ受け渡し
1. メソッドの定義
1. titleヘルパー、再び
1. 配列と範囲演算子
1. ブロック
1. ハッシュとシンボル
1. CSS、再び
1. コンストラクタ
1. クラス継承
1. 組み込みクラスの変更
1. コントローラクラス
1. ユーザークラス# 第5章の学習内容
1. ナビゲーション
1. BootstrapとカスタムCSS
1. パーシャル(partial)
1. アセットパイプライン
1. 素晴らしい構文を備えたスタイルシート
1. Contactページ
1. RailsのルートURL
1. 名前付きルート
1. リンクのテスト
1. Usersコントローラ
1. ユーザー登録用URL# 学習を終えて
第4章ではRailsでありながら、以前学習したRubyの基礎を学ぶような内容であった。テキストや動画の通りに進めることで、解決できないエラーも発生しなかったので、学習しやすかった。
第5章ではwebページのレイアウトの学習であったため、HTM
就活生のAtcoder奮闘記〜学習編〜
初めまして見習い駆け出しエンジニアです。
現在大学三年生です。データエンジニアとして長期インターンをさせていただきながら日々技術を磨いている次第です。これからとにかくアルゴリズムを勉強してatcoderの赤色を!と言いたいところですが、現在灰色の私には遠い未来ですので、まずは緑色を目標に(緑も難易度高い)アルゴリズムを勉強していきたいと思います。普段はc言語とrubyを主に使っているのですが、競プロではc++を使うと勉強がしやすいためまずはc++を軸に勉強していこうと思います。
まずこれから使っていく教材
・問題解決のための「アルゴリズム*数学」が基礎からしっかり身に付く本
・atcoderのc++の基礎文法この二つを一周するだけでまずどれほど太刀打ちできるのかを試してみようと思います。
8/20までに教材を終わらせてからその次のatcoderの大会に挑戦してみようと思います。
よろしくお願い致す。
配列内の数字の合計(同じ数字を除く)
# はじめに
2回目の問題だったのに解けなかったので、学習の復習のために投稿します。
回りくどくなるかもしれませんが、できるだけ自分の言葉で説明できるようにするつもりです。# 環境
ruby 2.6.5# 問題
3つの数字が格納された配列が与えられています。
この配列に格納された数字の合計値を出したいのですが、条件として、配列内で重複している数字に関しては除くことが求められています。“` ruby
def lone_sum(ary)
# 処理を記述
end
# 呼び出し例
lone_sum([1, 2, 3])
“`# 考え方
以下の手順で考える
1. 配列内で重複する数字があるかを確認する
2. 重複数字を除いたユニークな配列を作る
3. ユニークな配列に格納された数字を合計する## 1. 配列内で重複する数字があるかを確認する
配列に格納された数字をa, b, cとします。
まずはaの数字に対して、それぞれの配列内の数字を比較して同じかどうかを確かめます。
同じ場合にはカウントが上がるようにします。
例えば、aとa、aとb、aとcの数字を比較してカウン
【Rails】コメントの編集, 削除機能実装(form_with)
# はじめに
記事投稿アプリの記事に対して、コメントを作れる機能を実装した。
さらに、編集と削除ができるようにしたい。**完成図**
![完成図.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/617104a7-bfca-fd77-79d2-521bd15ec3a7.gif)# 前提
下記は作成済み
投稿機能
ユーザーテーブル
コメントテーブル
コメントコントローラー createアクション下記テーブルは作成済み。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |# ポイント
・コメント投稿機能とeditテンプレートを同じパーシャルを適用することで、dryにする。
・post_
Ruby 練習問題5 ~ if → unlessへの書き換え ~
こんにちは、プログラミング初学者”fujitacoma”です!
今回は、Ruby練習問題シリーズの5回目です。
unless文を使用した条件式の記述問題ですね。それでは早速始めます!
# 問題
次のif文をunlessというメソッドを用いて書き換えてください。“`ruby
if a + b > 0
puts “計算結果は0より大きいです”
end
“`
## ヒント
### unless
unlessとはifとは逆で、条件式がfalseの場合に処理が実行されます。__ifを使用した場合__
“`ruby
if 条件式
条件式がtrueの時に実行する処理
else
条件式がfalseの時に実行する処理
end
“`
__unlessを使用した場合__
“`ruby
unless 条件式
条件式がfalseの時に実行する処理
else
条件式がtrueの時に実行する処理
end
“`# 解答と解説
### 模範解答
“`ruby
unless a + b <= 0 puts "計算結果は0より大きいです" end ``` ###
Ruby 二重ハッシュの取り出し
以下のようなuser_dataがあり
“`
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`ターミナルの出力結果が以下のようになるようにコーディング
“`
George
Alice
Taro
“`# 回答
“`
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]user_data.each do |u|
puts u[:user][:profile][:name]
end
“`ハッシュから値を取得するときは取得したい値のキーを指定するという決まりがあったが、今回取り出したいのはnameなのでnameまで連続して指定する。
配列の中にハ
google-cloud-firestore v2.7.0 はぶっ壊れている
# 2.7.1が出たみたい
https://rubygems.org/gems/google-cloud-firestore/versions/2.7.1
# 問題
https://github.com/googleapis/google-cloud-ruby/issues/18832
“`rb
firestore = Google::Cloud::Firestore.new
doc = firestore.doc(“test/test”)
doc.set(foo: 123)
doc.get.fields
# => {“foo”=>{:null_value=>:NULL_VALUE, :boolean_value=>false, :integer_value=>123, :double_value=>0.0, :timestamp_value=>nil, :string_value=>””, :bytes_value=>””, :reference_value=>””, :geo_point_value=>nil, :array_value=>nil, :map_value=
【Rails】フォロー・フォロワー機能
# 開発環境
Rails 6.1.4
ruby 2.6.3# 前提条件
– devise導入# 目次
– モデルの作成
– アソシエーション
– メソッドの作成
– コントローラー作成
– ルーティング
– View作成## モデルの作成
まずはRelationshipモデルを作成します。
RelationshipモデルはUserモデルの中間テーブルにあたります。
なぜなら、フォローするのもフォローされるのもユーザーで、`多 対 多`の状態になるからです。カラムは、下記の通り定義します。
`follower_id` : フォローしたユーザー
`followed_id` : フォローされたユーザーここで`user_id`を使わないということが大切です。
RelationshipモデルはUserモデルの中間テーブルになるため、
どちらもidにはユーザーのidが入ります。
つまり、ここで`user_id`を使用してしまうと
判別がつかなくなってしまうため、`user_id`は使用しません。それでは、ターミナルでコマンドを実行していきます。
“`ruby:ターミ
仮想環境VirtualBox(Ubuntu20.04)でRails環境構築
# 概要
テキストを見ながらRails環境を構築しようとしたら
サーバー起動までの所で色々ハマってしまったので自分用に記録しておきます。
windows10 VirtualBox6.1 ubuntu 20.04 で構築しました。
windowsからubuntuへのコピペ機能を使える様にしてから始めると楽です。# 参考にした書籍
[現場で使える Ruby on Rails 5速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4%E5%AF%A7%E5%AD%90/dp/4839962227/ref=sr_1_6?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=217OVEDAHL3SK&keywords=rails&q
マイグレーションファイルを修正する方法
– アプリ制作途中にマイグレーションファイルの修正が必要になった。なんとか修正することができたので忘備録として記事にします。
## 経緯
– `ログイン機能`を実装するため`devise`をインストール
– 不要な機能をコメントアウトし忘れ`rails db:migrate`を実施。
– 実施後に不要な機能を削るため`マイグレーションファイル`の修正に取り掛かる。まずは`マイグレーションファイル`の修正について検索し、次のコマンドを実施
“`:ターミナル
rails db:rollback
“`
すると以下の様にエラーが発生
“`
Running via Spring preloader in process 89570
== 20220715104214 AddDeviseToUsers: reverting =================================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:Active
hashの復習
# 初投稿
プログラミング学習の備忘録として初めてみた。
# ハッシュの基礎の問題
“`
puts hash.keys
puts hash.values
“`
上記のメソッドを実行した時に“`
one
two
three
1
2
3
“`
とターミナルに表示されるような変数hashを作成するためのコードをシンボルを使って記述してください。# ハッシュとは
データとそれに対応する名前のセットを要素としてもつ値。
データがvalue,対応する名前がkey。キーバリューストア
key:User1 → value:Mikeハッシュではシンボルがキーとして用いられることが多いが、それは文字列でも数値として扱われて、コンピュータの速度が速くなるから。かつ文字列としての役割も果たせるしハッシュロケットの書き方よりも記述量も少なくていいということからシンボル型の書き方が多い。
# 回答
“`
hash = { one: 1, two: 2, three: 3}puts hash.keys
puts hash.values
“`ハッシュのキーを取得す
[Ruby] 複数行テキストのセル・空白行が含まれるCSVから正確な件数を取得する
# 背景
以下のようなシステムの作成中に、登録件数が正確に通知されないことがあった。
* CSVファイルからデータベースにデータを登録したい
* 1行につき1件として、複数行のCSVファイルを読み込む
* データがCSVからデータベースに登録されたら、登録件数を取得してSlackで管理者に通知する# 問題
以下を参考に、`.count`で`”\n”`の数で改行をカウントして行数を取得していたが、
登録件数が倍になって通知されることがあった。
https://rubytips86.hatenablog.com/entry/2014/03/23/091949# 原因
* 複数行のセルがあると、セル内の`\n`もカウントされてしまう
* 空白行があると件数としてカウントされてしまう# 解決法
csvfile: 件数を取得したいCSVファイル
row_size: CSVファイルの列数
“`ruby
column_length = File.read(csvfile).gsub(/,{#{row_size-2},}\r\n/,”).scan(“\r\n”).length
“`
Ruby3.1を触ってみる(debug)
# 0. はじめに
[Ruby 3.1](https://www.ruby-lang.org/ja/news/2021/12/25/ruby-3-1-0-released/) がリリースされ半年が経ちましたが、なかなか深くまで触れていないので手を動かしながらリリース内容を要所で見て所感を綴ろうかなと思います。
今回は 新規のデバッガー debug gemです。
既存でもデバッガー自体はありましたがそれと比較してみようかと思います# 1. リリースノートを見てみる
> デバッグ時の速度低下を極力生じないよう改善
リモートデバッグのサポート
リッチなデバッガフロントエンドに対応(現在 VSCode と Chrome ブラウザに対応)
マルチプロセス、マルチスレッドプログラムのデバッグに対応
カラフルな REPL
そのほか、Record & Replay 機能やトレース機能など、様々な便利機能
…
Rubyにはこれまでも lib/debug.rb が同梱されていましたが、あまりメンテナンスされておらず、性能や機能に問題がありました。debug.gem はこれを完全に置き換えます
mysqlやAWSの本番環境に接続しようとした時、Permission denied (publickey)
## 原因
githubの公開鍵を過去に誤って変更してしまっていたから。## 解決までの流れ
### ①公開鍵を保存してる場所を確認
github公開鍵は/Users/****_****/.ssh/id_rsaのパスを合わせる。以下のコマンドを打って、pwdで.sshのパスを確認する。
“`
ls ~/.ssh
cd ~/.ssh
pwdpwd => /Users/****_****/.ssh
“`実際にパスを設定する。
以下のコマンドで中身を見る。
“`
vim ~/.ssh/config
“`
IdentifyFillの表記が確認できる。
先ほど確認したパスをそれにつづけて書き保存する。
“`
IdentifyFill /Users/****_****/.ssh/id_rsa
“`ここまでで設定はOK
### ②公開鍵がしっかり設定されているか確認した
以下のコマンドで公開鍵が見れる。
“`
vim ~/.ssh/id_rsa.pub
“`ここで公開鍵を確認したところ、過去に誤って、公開鍵を変えていたことが判明。
新しく公開鍵を設定し
map(&: ~ )の(&:)とはなんなのか
# map(&: ~ )の(&:)とはなんなのか
こんにちは。
今日は、AtCoderを解いていて、よく見かけたmap(&:~)とはなんなのか調べたので、備忘録くらいの感覚で書いていきたいと思います。## mapメソッドとは
まず初めにmapメソッドとは。[公式リファレンスマニュアル](https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/collect.html)より
>各要素に対してブロックを評価した結果を全て含む配列を返します。
>
> すべて 3 倍にした配列を返す
p (1..3).map {|n| n * 3 } # => [3, 6, 9]とのことで、この例題を見るとわかりやすいですよね。
mapのあとにあるブロックを1、2、3に適応していく。
このような使い方だと自分でも使えそうです。しかし、AtCoderでよく見るのは、入力に対してmapメソッドを使う場面です。
よくある問題の入力値の獲得方法として、
`入力
“12 3″`
`結果 a= 12 b = 3`
のように複数の値の獲得をスペー