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

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

【Rails】ancestryを用いた多階層カテゴリー機能の実装『編集フォーム編』

# 目標

![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/9e75c70b-d0d0-6cd5-5ec9-894af5d3bb34.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[Font Awesome導入](https://qiita.com/matsubishi5/items/a4c72f436e64ad106ee8)
・[ログイン機能実装](https://qiita.com/mat

元記事を表示

Rails プレゼンターを導入する

#プレゼンターを導入する

プレゼンターとはView部分にあるロジックのHTMLコードを精製する役割を担います。
要はview部分をスッキリさせようぜってもんです。
プレゼンターはデコレーターとも呼ばれます。

GemではDraper,Cellsなどが使われているようですが、
Gemを今回は使わずに実装をしていきます。

##helperはあかんのか?
ビューで使用するメソッドなのでヘルパーメソッドとして定義するのは自然です。
でもhelperはグローバルに定義される、メリットとデメリットがあります。
プロジェクトが大きくなるにつれて名前が衝突するリスクが増してしまいます。

今回は以下のコードに含まれるロジック部分を分離していきます。
犯罪者リストのロジックです。
arrested?(逮捕されているか?)でtrueの場合は☑️をつけ、
そうでない場合は空欄の□となります。

“`erb
<% @members.each do |m| %>
<%= m.arrested? ? raw("☑") : raw("☐") %>
“`

##Modelに関

元記事を表示

irbとpryの違いについて

irbはRuby付属の対話的環境。標準搭載。

pryはgem。Railsのデバックにはpryがオススメらしい。

イメージとしては、irbよりpryの方が少しリッチ。(そんなに変わらないが)

元記事を表示

Rails Tutorial 第6版 学習まとめ 第9章

###概要
この記事は私の知識をより確実なものにするためにRailsチュートリアル解説記事を書くことで理解を深め
勉強の一環としています。稀にとんでもない内容や間違えた内容が書いてあるかもしれませんので
ご了承ください。
できればそれとなく教えてくれますと幸いです・・・

出典
[Railsチュートリアル第6版](https://railstutorial.jp/)

###この章でやること
・ユーザーの任意でログイン情報を記憶しておき、ブラウザを再起動してもログインできる機能を追加する。

###Remember me機能
↑でも述べた通りブラウザを閉じてもログインを保持する機能を実装する(Remember me)
トピックブランチを作成して作業を始める。

####記憶トークンと暗号化
これからの作業や作成物がなかなか難しいので先回り知識を確認する。

・トークンとは
コンピュータが使うパスワードのようなもの。
パスワードは人間が作成して人間が管理するがトークンはコンピュータが作成してコンピュータが管理する。

・永続的cookiesと一時セッションについて
前章で作成した一時セッ

元記事を表示

progateで習得したrailsの基礎知識まとめ

## どんな人向けの記事か
– Railsを学び始めて間もない人
– Railsで初めてアプリを作ろうとしている人
– Rails慣れはしているけど少し復習したい人

## どんな記事か
Rails初学者である筆者が、先日修了したprogateのRailsコースで学んだことを並べていく記事です。
ところどころ他記事の情報で補完しているため、progate運営が表現・説明した内容とは異なる箇所もそれなりにあります。

## 各種概念
#### サーバー
クライアント(ブラウザ)の要求に応じてデータを提供するコンピュータ。
Railsで作ったアプリをブラウザで表示するためには、このサーバーを起動させる必要がある。

#### ビュー
ページの見た目を作るためのHTMLファイル。ブラウザとRailsのやりとりの中で、Railsからビューが返されることで、ページが表示される。
拡張子は`.html.erb`。erbはEmbedded Rubyの略で、HTMLファイルにRubyスクリプトを埋め込むための仕組み。
下記のコントローラ・ルーティングと同様に、ページを作成するのに必要な3つの要素のうち

元記事を表示

Rubyでアルゴリズムを実装する:Day 4 -線形探索-

3日坊主を脱却して4日も続きました。
3日目はこちら<[Rubyでアルゴリズムを実装する:Day 3 -二分探索-](https://qiita.com/Atarubift/items/640abe8c8f873c23aee5)>

# 線形探索とは
ランダムなデータを最初から一つずつ比べて特定の値を見つけていく方法。
見つかったらそこで処理を終了する。
とーっても簡単なアルゴリズムだ
仕組みがわかったら即コーディングに移ろう

# linerSearch.rb

## コード
“`rb
# 線形探索

def linerSearch(data, target)
bool = -1
count = 0
while count <= data.length if data[count] == target bool = count break end count += 1 end bool end # 実行 print "格納する値:" data = gets.split().map(&:to_i) print "探

元記事を表示

Ruby で gRPC クライアントを実装する

gRPC のクライアントを Ruby で実装する手順を備忘も兼ねて書いておく

# まずは gem を入れる
– Ruby で gRPC を利用するために `grpc` gem をインストール
– これを入れることで、クライアントの実装に必要な class 群を利用できるようになる

“`Gemfile
gem ‘grpc’, ‘~> X.XX.X’
“`

# .proto ファイルの取得とコンパイル
– .protoファイルの管理方法はいくつかあるが、詳細は[こちらの記事](https://qiita.com/RyotaNakaya/items/d71d2cb5f5cd44b052ee)を参照
– .proto を rb ファイルにコンパイルするには `grpc_tools` という Gem を利用する

“`
$ gem install grpc-tools
“`

– コンパイルのコマンドは以下のような感じ

“`bash
$ grpc_tools_ruby_protoc -I ./proto \–ruby_out=lib –grpc_out=lib ./

元記事を表示

【Rails】ancestryを用いた多階層カテゴリー機能の実装『作成フォーム編』

# 目標

![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/823563e9-302b-6a20-b712-0cb207d73472.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[Font Awesome導入](https://qiita.com/matsubishi5/items/a4c72f436e64ad106ee8)
・[ログイン機能実装](https://qiita.com/mat

元記事を表示

未経験からエンジニアになって一ヶ月がたった…

#未経験からエンジニアになって一ヶ月がたった…

未経験の営業社員からエンジニアになって一ヶ月がたちました。
感じていることや思ったことをメモがてら。

##難しい、けど面白い

できないことばっかりで人に聞く回数も多い。
でもやっぱりプログラムを書くことは楽しいし、
何かを作ることは楽しい。この業界を選んで良かったと思ってます。

##もっともっと勉強を
みんな情報技術が好きで常に学んでいる。
僕ももっともっと勉強をしなければ周りの人たちには一生追いつけない。
そしてもっともっと楽しんで技術を追求していきたい。

##connecting the dots
興味のある技術は仕事に直接関係が無かったとしても、
積極的に学んでいきたい。
その時はどこに繋がっているか見えなかったとしても、
きっとどこかに繋がっていると信じることが大切だと
ジョブズが言っていた。

##スピードを上げる。
仕事のスピードを上げる。
そのために知識をつける。
言語に対する知識。
業務的な知識。
ツールに対する知識。

##要はもっと勉強しよう
一日一日を大切にがんばっていきます。

**一人前のエンジニ

元記事を表示

Rubyでトリボナッチ数列の問題を解いてみた、再帰で。

「[Rubyでトリボナッチ数列の問題を解いてみた(制限時間10分)](https://qiita.com/keisuke_oyatu/items/43c0100f885c2050b956)」という記事を見て、再帰で書きたいな、と思ったのでカキコ… というのは嘘で、本当はトリボナッチっていうものを知らなかったので、焦って書きました。

# コード
“`ruby
# Tribonacci
def tribonacci n
if n == 1
return 1
elsif n == 2
return 1
elsif n == 3
return 2
else
return tribonacci(n – 3) + tribonacci(n – 2) + tribonacci(n – 1)
end
end

p (1..10).map{|n| tribonacci n } # => [1, 1, 2, 4, 7, 13, 24, 44, 81, 149]

# Unit Test
require ‘test/unit’

class TC_

元記事を表示

Railsエンジニアの環境構築ruby2.7.1

macが故障して入れ直しが必要だったため備忘録として書きます。
herokuやitem2の設定など、必須じゃない設定も載せてます。

# Command Line Tools
“`
xcode-select –install
“`
は重いのでxcodeインストールしてこっちでやる

スクリーンショット 2020-06-20 10.15.43.png

####確認
“`
xcode-select -version
“`

# Homebrew
https://brew.sh/index_ja

####確認
“`
brew -v
“`
# rbenv
“`
brew install rbenv ruby-build
“`

## zshrc設定
####なかったら

“`
vi .zshrc

元記事を表示

putsでnilが返ってくる。これの意味は?

#putsでnilが返ってきているが、どう言うこと?
今まで無視してきましたが、考えてみればこれは一体どう言う意味なのか?

“`
irb(main):001:0> a = “apple”
=> “apple”
irb(main):002:0> puts a
apple
=> nil
“`

上記を見ると、putsでappleがあるのは分かるが、nilが返ってきている。

前提として**『出力』と『返り値(戻り値)』は別物**みたいです。

同じ意味ではないです。

・“`出力“`:表示するだけ
・“`戻り値“`:値を返して、メソッドを終了

じゃ結局のところ、putsは表示させるだけのものと言うことですね。

なぜ、そんなものが必要なのでしょう?
[参考](https://teratail.com/questions/10171)

表示するだけで、プログラム自体には変化を与えていないと言うこと。
無駄をなくすためと言うことですね。

#参考

元記事を表示

webサーバとアプリケーションサーバって何が違うんだろう?

「webサーバとアプリケーションサーバって何が違うんだろう?」、ふと思ったのでまとめた。

#サーバとは
まずサーバって何?という話。サーバは英語でserver、つまり供給する・提供するってこと。[IT用語辞典](http://e-words.jp/w/%E3%82%B5%E3%83%BC%E3%83%90.html) によるとサーバとは、コンピュータネットワークにおいて、他のコンピュータに対し、自身の持っている機能やサービス、データなどを提供するコンピュータのこと。私たちがwebページを閲覧するとき、自分のPCから「このページ見たい!」とサーバにお願いする。すると、サーバが「はい、これ!」とページを返してくれる。これで、めでたくwebページが見れる。通常、個々のサーバ機やサーバソフトは、外部に提供する機能やサービス、対応しているデータ形式やプロトコル(通信規約)が決まっている。そして、「DBサーバ」「webサーバ」「アプリケーションサーバ」のように、提供する機能などの種類を冠して「○○サーバ」と呼ぶ。

#webサーバ
webサーバはブラウザからのコンテンツのリクエストを受け取り、ブ

元記事を表示

ERROR! MySQL server PID file could not be found!

“`
asatokensei@MacBook-Air memopy % mysql.server start
Starting MySQL
……
.^C
asatokensei@MacBook-Air memopy % mysql.server stop
ERROR! MySQL server PID file could not be found!

asatokensei@MacBook-Air memopy % ls -la /usr/local/var/mysql/MacBook-Air.local.pid
ls: /usr/local/var/mysql/MacBook-Air.local.pid: No such file or directory

asatokensei@MacBook-Air memopy % mysql.server status
ERROR! Multiple MySQL running but PID file could not be found (14996 15095 )
asatokensei@MacBook-Air me

元記事を表示

[Ruby on Rails] フォロー機能 undefined method `id’ for nil:NilClassというエラーの解決

![スクリーンショット 2020-06-20 06.55.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547640/e67b71c9-38e1-7df9-bfd8-8f1dbe9a6724.png)

## 前提・実現したいこと
フォロー機能を実装したい。
ruby 2.5.1p57
Rails 5.2.4.2

フォロー機能を実装中に以下のエラーメッセージが発生しました。
## 発生している問題・エラーメッセージ

“`ruby:error
undefined method `id’ for nil:NilClass
“`

## 該当のソースコード

#### テーブル(マイグレーションファイル)

“`ruby:relationshipsテーブル
class CreateRelationships < ActiveRecord::Migration[5.2] def change create_table :relationships do |t| t.in

元記事を表示

10進数から2進数に変換する際の注意点

## はじめに
プログラミング初学者です。今回初めて記事を書きます。
今後アウトプットすることを習慣にするため、練習も兼ねて短いものから、徐々に書いていきたいと思います。

今回は、某スキルチェックサイトで勉強している際に少し混乱したので自分の備忘録も兼ね書きます。

## 変換する際の注意点
10進数からn進数、n進数から10進数にそれぞれ変換する場合、使うメソッドが変わります。

## 10進数をn進数に変換する場合 to_sメソッドを使う
to_sメソッドに引数を渡すことでそれぞれ2〜36進数までの文字列をかえしてくます。

“`
p 255.to_s(2) # => “11111111” 10進数 → 2進数
p 255.to_s(8) # => “377” 10進数 → 8進数
p 255.to_s(16) # => “ff” 10進数 → 16進数
p 255.to_s(32) # => “7v” 10進数 → 32進数
p 255.to_s(36) # => “73” 10進数 → 36進数

元記事を表示

【formで引数が2つのもの】rails, form_for / form_with 引数

##【ゴール】

##【メリット】
■ formの理解
■ アソシエーションの理解

##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

##カリキュラムにて

####form_for[@post, @comment]…..

ん?

今までは、
form_for(@post)….

引数が一つだったのに、なんで二つも???

####理由は引数を2つ渡さないといけないから。

今回の場合は**アソシエーション**されている為

Post : comment = 1 : 多

なので、postのにも、commentにも値を与える必要がある、、、

なので、

####form_for[@post, @comment]になる!!!!

以上、
修正箇所ございましたら、FBください!!

##【合わせて読みたい】

■コメント機能実装について
https://qiita.com/tanaka-yu3/items/93d94b1ede8fb4be2981

元記事を表示

scaffoldの初期状態まとめ

scaffoldをもとに開発しているとき初期のコードを忘れてしまう事があるのでコントローラーとindexとフォームをメモしときます。

“`ruby:posts_controller.rb
class PostsController < ApplicationController before_action :set_post, only: [:show, :edit, :update, :destroy] # GET /posts # GET /posts.json def index @posts = Post.all end # GET /posts/1 # GET /posts/1.json def show end # GET /posts/new def new @post = Post.new end # GET /posts/1/edit def edit end # POST /posts # POST /posts.json def create @post

元記事を表示

主なステータスコードまとめ

自分用メモです。

| ステータスコード | シンボル | 意味 |
|:—————-|————————:|:———————-:|
| 200 | :ok | 成功
| 201 |:created | リソースの作成に成功
| 301 |:moved_permanently | リソースが恒久的に移動した
| 302 |:found | リソースが一時的に移動した
| 303 |:see_other | リソースが別の場所にある
| 401 |:unauthorized | 認証を要求
| 403

元記事を表示

WindowsでRuby on Railsのブレークポイントが効く開発環境を構築する

#WindowsでRuby on Railsのブレークポイントが効く開発環境を構築する
##開発環境
– Windows 10 64bit Ver.10.0.18362
– Visual Studio Code Ver.1.46.0
– ruby Ver.2.6.6
– Rails Ver.6.0.3.1

##Rubyのインストール
###Ruby+Devkit のインストール
Windows版のRuby+Devkitを[ダウンロード](https://rubyinstaller.org/downloads/)し、インストールする。デフォルトのインストールパスを変更した場合は、この後にインストールする一部のgemについて、別途設定変更が必要になるので注意。
###必要なgemをインストール
Visual Studio Codeのターミナルから操作する。ターミナルはメニューの「ターミナル」から「新しいターミナル」を選択すると画面下部に開かれる。

“`
gem install rubocop
gem install ruby-debug-ide
gem install debase

元記事を表示

OTHERカテゴリの最新記事