Ruby関連のことを調べてみた2020年04月25日

Ruby関連のことを調べてみた2020年04月25日
目次

ActiveRecordから特定のカラムの配列を取得したい

#はじめに

Railsでアプリを作っている際に、whereで絞ったレコードの特定のカラムの配列を取得したい時がありました。

例えばusersテーブルのgenderがmaleのnameのみの配列を取り出したい!みたいな。

## 最初の実装

空の配列を作って、繰り返し処理で配列に入れていくみたいな感じです。

~~~ruby:users_controller.rb
male_names = []

User.where(gender: “male”).each do |user|
male_names << user.name end ~~~ これでこんな感じで配列が取得できます。 ~~~ ["太郎", "花子", "次郎"] ~~~ しかしなんかダサいしめんどくさいなぁと感じていました。 ## pluckというメソッドを見つける ActiveRecordのメソッドを色々見てるとpluckというメソッドが有りました、日本語でむしるという意味らしいです。 引数にカラム名を指定して使います。 ~~~ruby:users_controller.rb male_

元記事を表示

厳選!Ruby アルゴリズム実装に使える 25 の 標準ライブラリ【前編】

# はじめに
@E869120 さんがとてもいい記事を投稿されています。
[厳選!C++ アルゴリズム実装に使える 25 の STL 機能【前編】](https://qiita.com/e869120/items/518297c6816adb67f9a5)

それの、**Ruby** 版です。
# 今回紹介する 25 個のメソッド
||メソッド|標準モジュール|例|
|—:|:—:|:—:|:—:|
|1.|絶対値 abs|〇|abs|
|2.|三角関数 sin/cos/tan|〇|Mathモジュール|
|3.|文字列 string|〇|size他|
|4.|最大値・最小値 min/max|〇|min/max|
|5.|値の交換 swap|〇|リスト|
|6.|最大公約数 gcd|〇|gcd|
|7.|乱数 rand|〇|rand|
|8.|時間計測 clock|〇|Timeモジュール|
|9.|配列を逆順に並び替え reverse|〇|reverse|
|10.|ソート sort|〇|sort|
|11.|vector|〇|配列|
|12.|stack|〇|配列|
|

元記事を表示

RubyでFizzBuzz問題を改めて復習したので備忘録

# はじめに

###FizzBuzz問題とは、、、
>FizzBuzz問題とは、1からnまでの整数を表示する中で、3の倍数なら`Fizz`、5の倍数なら`Buzz`、3と5両方の倍数なら`FizzBuzz`、と出力する問題のことです。

######ではRubyかつeach文を使って書いてみます

~~~ruby
n = gets.to_i

(1..n).each do |i|
if i % 15 == 0
puts “Fizz Buzz”
elsif i % 3 == 0
puts “Fizz”
elsif i % 5 == 0
puts “Buzz”
else
puts i
end
end
~~~

~~~sample
30
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
Fizz Buzz
~~~

# 終わりに

引き続きRubyの復習を続けて

元記事を表示

ancestryを用いたseedデーター作成について

某スクールにおいて、チーム開発で、フリーマーケットアプリを作成中であり、使用した技術について公開しています。
※初学者のため、ミスや認識違いが多々あると思いますがご了承ください。

## railsのseed機能を用いて、カテゴリーをデーターベースにまとめて保存した。

 railsには、**「ancestry」**という非常に便利なgemがあります。
 ancestryの機能について、簡単に説明させていただきますと、ancestryとは日本語で**「先祖」**という意味で、その名の通り家系図のような繋がりを持つデーターベースを利用するときに真価を発揮します。
 ※導入やモデル、マイグレーションの作成については割愛します。

 わかりやすく言うと、「波平」というデーターがあって、その配下には「サザエ」、「カツオ」、「ワカメ」とうデーターがあり、さらに「サザエ」の配下には、「タラオ」、 **(注:以下妄想です)**「マグ郎」「カクレクマノ美」という繋がりのデーターベースがあったとします。(ちなみにカクレクマノ美はなぜか、どう見ても黒人とのハーフだそうです。不思議ですね)

 例えば

元記事を表示

デメテルの法則

「ドットがつながったらあかんで」とかいうやつ、くらいの認識しかなかったが整理できたのでメモ。

結論としては、「ドットがつながったらあかんで」ではなく、「ドットがつながったときは不要な依存をつくっちゃう場合があるから、ほんとにそれでいいかよく考えなね」であると理解した。

### 飛び越えた依存

例えば以下のようなコードを考える。
(以下、barや@barはBarインスタンスであることを前提とし、bazについても同様。)

“`ruby
class Foo
def foo_method
@bar.baz.baz_method
end
end
“`

あるいは、こんなコード。

“`ruby
class Foo
def foo_method(bar)
bar.baz.baz_method
end
end
“`

Fooの中で@bar/barに対して`Bar#baz`というメソッド呼び出しをしているので、FooはBarのインターフェースを知っている=FooはBarに依存していることになる。

これは以下のように図示できる。

“`
Foo ->

元記事を表示

AWSを用いてrailsアプリをデプロイするプロセスを頑張って噛み砕いてみるvol.2

## 近況報告
連投ではありますけど,近況報告のネタはたくさんあります。ついさっきテックキャンプの最終課題発表会が終わり,無事転職活動に進めることになりました。ほんとメンバーに助けられた〜。これからは今持ってる力を磨きながらぶつかっていく戦いが続きます。頑張ります。

#今回の目的
・インフラ整備での各アクションの言語化
・コードを単に打っているだけでは理解しきれないし,他に応用できないので言語化して整理
・AWSでアカウント作成,ほか諸々の準備は割愛してターミナルでの操作をメインに

##おおまかな流れ
本番環境用のデーダベース作成(MySQL)
アプリケーションサーバーの準備(githubの認証)

##事前準備
[前回の内容](https://qiita.com/aaabb6211/items/6194fa53f29061dc5444)の続き

### 本番環境用のデーダベース作成
EC2は本番環境を整備して土地を提供してくれるけど,そこに建てる建造物や木材は持ち込みです。開発環境のようにデータベース,アプリケーション,それに加えて,遠隔操作するためのロボット(ここではNginx

元記事を表示

【Rails】クッキー・セッションからログイン機能までを改めておさらいしようのコーナー

わし「クッキーとかセッションとか記憶トークンとか意味ワカンネ( ᵕ̩̩ㅅᵕ̩̩ )」

Railsチュートリアル8,9章が急に本気出してきたので改めてセッションやらクッキーについてまとめておきます…
ログイン機能を実践的に書くとかはしないのでよろしくな!

##セッションとクッキーの違い
####HTTP通信はステートレス
というのは恐らくどんな教材にも載ってますよね。
HTTP通信は過去にした通信をすべて忘れてしまいます。
あなたがログインフォームに打ち込んだメールアドレスやパスワードも、本来なら次のページに移る頃には無かったことになってしまうのです。
ではどのようにしてログイン情報を保存しているのでしょうか。

####クッキーは保管庫・セッションは接続
HTTP通信はステートレスですが、ブラウザにはしっかりと情報を保存させておく場所が用意されております。
それが**クッキー(cookies)**です。
ブラウザのクッキーに、ログイン情報(ユーザーIDなど)を格納させておくことで、
クライアントとサーバーサイド間でクッキーの情報を照合し、ログインしているのかどうかを確認することがで

元記事を表示

【Ruby on Rails Tutorial】Oops VFS connection does not exist と表示される。【再起動実施済】

#プレビュー画面が表示されない

AWSのcloud9でRuby on Rails Tutorialを実施していたところ、プレビュー画面で以下となった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594264/59b28533-9cf2-55cc-c607-b0ffcba8af4f.png)

##実施したこと
調べてみたところ、EC2サービスを再起動すれば、表示されるとのこと。
AWSのEC2からインスタンスを表示し、再起動を実施。
rails server コマンドを実施し、プレビュー画面が表示されるか確認するとまだ表示されない・・。

##原因
どうやらブラウザが原因のよう。
[brave](https://brave.com/)という広告ブロック機能が搭載されたブラウザ(報酬でBATという仮想通貨がもらえる!)
を利用していたため、制限されてしまっていた。
右上のライオンマークから「Shields 有効このサイトに対して」を無効にしたところ、直った。

![image.

元記事を表示

Ruby on Rails on Docker on EC2(AmazonLinux2)

# はじめに

RailsのアプリをさくっとEC2で動かしてみたいっていうことがあったので、その時の手順をメモ書き的な感じで残しておこうと思います。

サーバーにRubyをインストールしたりなどの環境構築が面倒だったので、RailsもNginxもMySQLもDockerで環境構築してみました。

## Docker導入の準備

### 1. Rails用のDockerファイルを作成する

RailsアプリのディレクトリにDockerfileを作ります。

~~~
sample_app user$ touch Dockerfile
~~~

~~~Docker:Dockerfile

FROM ruby:2.6.5
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – \
&& echo “deb https://dl.yarnpkg.com/debian/ stable main” | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get upda

元記事を表示

RubyからオーディオライブラリBASSを使う

BASSという素晴らしいオーディオライブラリがあるので、Fiddle噛ませてRubyから使いたいメモです。
オーディオ関連もFiddleもほとんど知識ないので、いろいろおかしかかったら教えて下さい。

コードはここに置いてあります
https://github.com/tamaki-kurenai/bass

BASSはこちらから
http://www.un4seen.com/

こちらの記事を参考にさせていただきました

元記事を表示

Rails 個人学習記録 #2 (2020/4/24)

#修了したコース
– Ruby on Rails Ⅷ
(道場まではいきませんでした…)

#学んだこと
###フォームの値を送信できるようにする
ルーティングをpostにし、アクションを追加する

form_tagメソッドを用いてlogin_form.htmlにフォームの送信先を指定
フォームに入力された値がRailsに送信されるように、inputタグにname属性を追加する
**注:form_tagメソッドの使い方!**

“`login.html
<%= form_tag("/login") do %>

<% end %>
“`

application.html.erbとlogin_form.html.erbにおいて
“/login”で2つのルーティングが被っている様に見えるが、get と post では異なるルーティングとして扱われるので問題ない。
**link_toメソッドではデフォルトでgetのルーティングを探し、form_tagメソッドがデフォルトでpostの

元記事を表示

ActiveRecordに保存した画像URLのデータから画像をファイルを読み込み、S3にアップロードしてみる

#はじめに

あるサイトから画像URLを収集してきてDBに保存し、画像ファイルをS3に送りたいみたいなことがあったので、その時のことをメモみたいな感じで書いていこうと思います。

#概要

#### 1. まず画像URLを収集して保存したDBを用意

以下のような感じです。今回はテーブル名はimagesとしておきます。

| id | image_url | s3_path |
|:—————–|:——————|:——————:|
| 1 | http://~~~~~ | NULL |
| 2 | http://***** | NULL |
| 3 | http://[[[[[ | NULL |

#### 2. DBの画像URLにアクセスし画像ファイルを読み込む

DBから

元記事を表示

bundler: command not found: clockwork でclockworkコマンド実行に失敗した際の対処法

#bundler: command not found: clockwork でコマンド実行に失敗した際の対処法

##背景
3分おきに実行する定期実行スクリプトを作成するために_[clockwork](https://github.com/adamwiggins/clockwork)_ というgemを利用しました。

その際の対処法を覚え書きとして記載。

“`bash:エラー
$ bundle exec clockwork ファイル名.rb;
bash: clockwork: command not found
“`

## 目次
* [動作環境](#動作環境)
* [結論](#結論)
* [原因](#原因)
* [おわりに](#おわりに)

—————————————
## 動作環境
`OS : macOS Mojave 10.14.6`
`ruby : 2.6.3p62`
`rails : 5.2.4`

## 結論
以下のコマンドを打つと実行できました。

“`bash:解決法
bundle exec clockwor

元記事を表示

Ruby on Rails 〜同率順位も含めたランキング機能〜

今回はいいね順に投稿内容を表示する方法を書いていきたいと思います
#前提
いいね機能を実装していること

https://qiita.com/MitsuguSueyoshi/items/18fa5e49a27e727f00b4
こちらの記事を参照にランキング機能を実装していること

上に載せている記事のcontrolleの記述では3番目まで投稿されるようになっているので今回は同率順位をわかりやすく表示するためにlimitの値を7にします

変数の値は自分のプロダクトに添って変更しました(ご了承ください?‍♂️)
#はじめに

まず<% @all_ranks.each.with_index(1) do |ranking, i| %>この記述によってそれぞれのいいねされた投稿内容がいいね順に並びます<%= ranking %>としてみれば# よくわからない文字の羅列が出力されますが<%= ranking.body %>などにしてみるといいねが多い順に投稿されることが分かりますか?ですがいいねが同数の場合は先に投稿された内容が上の順位に来て

元記事を表示

AWSを用いてrailsアプリをデプロイするプロセスを頑張って噛み砕いてみるvol.1

### 近況報告
 やあ,転職活動を目前にして,ついに個人アプリのデプロイを行なっていきます。テックのカリキュラムは離れると見られなくなるのでこういう場所に自分のやってきたことをメモできたらなあと思っています。個人アプリに関してはDockerを導入して完成としたかったのですが,時間的にとりあえずデプロイを行うことにしました。テックエキスパートのカリキュラムを元に書いてるのでそれと互換性があります。この記事は後々制限つけようかな。
#今回の目的
・**インフラ整備での各アクションの言語化**
・**コードを単に打っているだけでは理解しきれないし,他に応用できないので言語化して整理**
・AWSでアカウント作成,ほか諸々の準備は割愛してターミナルでの操作をメインに
## おおまかな流れ
・本番環境をリモートで操作する準備
・本番環境の構築
・rubyインストール
###事前準備
awsのアカウント作成
インスタンス作成
インスタンスとEPアドレス紐付け
セキュリティでポートのスタンバイ
キーペア作成

以下キーペアDL後から書いていきます
### 本番環境をリモートで操作する準備

“`

元記事を表示

メル○リ風 ドロップダウンリストの作成

 某スクールにおいて、チーム開発で、フリーマーケットアプリを作成中であり、使用した技術について公開しています。
※初学者のため、ミスや認識違いが多々あると思いますがご了承ください。

# ヘッダーから、ドロップダウンリストを用いてカテゴリーを選択できるように実装した。
                     **動作イメージ**

![037dccf322add94d86b341748e3fa647.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547556/d4aa2005-9c3f-fb0a-7371-8d7ed4e79675.gif)

## 前提条件
ancestryにより、カテゴリーの親から孫まで紐づいている。

## 実装要件
– サーバー
1. クリックしたカテゴリーに紐づく商品を一覧表示する。
2. 親カテゴリー、もしくは子カテゴリーがクリックされたら、紐づく子カテゴリ、孫カテゴリーの商品も全て一覧表示する。
– マークアップ
1.

元記事を表示

アカウント登録で使用したカスタムバリデーションと正規表現のメモ

以下のような、入力フォームによくある条件でバリデーションかけたいときのメモ
・アカウント名は半角英数記号もしくは以下の記号のみ有効( _ – . )

“`ruby:models/user.rb
# バリデーションを自作
def check_account_name
if account_name !~ /^[a-zA-Z0-9-_\.]+$/
errors.add(:account_name, “の内容が不正です”)
end
end
“`

## 正規表現部分解説

### メタ文字
“`
( ) [ ] { } . ? + * | \
“`
上記の記号はメタ文字といい、正規表現内で特殊な働きをする。

## !~
正規表現のメソッド =~ の否定。マッチが失敗したらtrueを返す。
上記のコードでマッチが失敗したらバリデーションに引っかかるように。

## /
/で始まり/で終わっているが、これは正規表現の条件はここからここまでだよという範囲を明示するためのもの。
調べてみると/は何の意味も持たない記号で、実際はどの文字で

元記事を表示

Ruby(学習記録)

###Ruby Ⅰ
“`
・ puts ???

・ #

・ +, -, *, /, %
  // +=, -=, *=, /=, %=

・ #{変数名}
  // ダブルクォーテーションを使った文字列にのみ適用

・ if 条件式
   処理
  elsif 条件式
   処理
  else
   処理
  end

・ <, <=, >, >=
・ ==, !=

・ &&, ||

“`

###Ruby Ⅱ
“`
・ [値1, 値2, 値3]
  - 配列名[インデックス番号]

・ 配列.each do |変数名|
   処理
  end

・ {“キー1” => 値1, “キー2” => 値2}
  {:??? => 値1, :??? => 値2}
  {???: 値1, ???: 値2}
   – ハッシュ名[“キー名”/シンボル]
   // ハッシュ[新しいキー] = 値 で新しい要素も追加可能

・ nil

・ 配列[インデックス番号][キー]
   // 配列の中にハッシュが入っている場合

“`

###Ruby Ⅲ
“`
・ def メソッド名

元記事を表示

#Ruby #Rspec mock method chain ( is it correct way ? )

“`rb
class User
def initialize(name:, age: )
@name = name
@age = age
end

attr_reader :name, :age

def book
Book.new(author: name)
end

def book_number
book.number
end
end

class Book
def initialize(author: nil)
@author = author
@number = Random.rand(999_999)
end

attr_reader :author, :number
end

require “rspec”

describe do
context “No mock” do
subject { user.book_number }

let(:user) { User.new(name: “Alice”, age: 20) }

it do
i

元記事を表示

PostgreSQLでcould not start serverと言われた時の対処法

こんにちは、プログラマーの就職を目指して学習している[たこ](https://twitter.com/tako_guangzhou)です。

# はじめに
この記事では、PostgreSQLのサーバーを起動するときに

“`
$ pg_ctl start

waiting for server to start….2020-04-23 14:29:14.708 JST [888] LOG: starting PostgreSQL 12.2 on x86_64-apple-darwin18.7.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.17), 64-bit
2020-04-23 14:29:14.709 JST [888] LOG: could not bind IPv6 address “::1”: Address already in use
2020-04-23 14:29:14.709 JST [888] HINT: Is another postmaster already running

元記事を表示

OTHERカテゴリの最新記事