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

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

if文を簡単に

#if文をワンライナーで書くには?

str = “is this a book?”
if str.include?(“?”)
puts “yes, it is.”
end

str = “is this a book?”
puts “yes, it is.” if str.include(“?”)

学んだこと
・オブジェクト名.include?(”文字列”とか配列)
・include?は正規表現は使えないっぽい
・三項演算子というものもある

元記事を表示

railsで一覧ページに[gem kaminari]を導入する流れについてまとめてみた。

#kaminariの導入の仕方

##1.Gemfileにkaminariを追加して保存。

“`Gemfile.
gem ‘kaminari’,’~> 1.1.1′
“`

##2.kaminariをインストールする
`$ bundle install`

##3.kaminariの設定ファイルを作成する
`$ rails g kaminari:config`

##4.kaminariがページャで利用するテンプレートを作成する
`$ rails g kaminari:views default`

##5.ページャを実装する

ページネーションさせたい場所に

“`app/views/books/index.html.erb
<%= @books.each do |book| %>
:
:
<% end %>
<%= paginate @books %> <"←これを追加">
“`
“`app/controllers/books_controller.rb
@books = Books.all.page(param

元記事を表示

YouTubeっぽいコメント欄を作ってみよう!(返信機能追加)

# はじめに
こんにちは!今回はYouTubeっぽいコメント欄を作ってみようと思います!
色々調べていたのですが、似たような記事がなかったので自力で実装した部分が多いです(><) もっと良い方法があるかもしれないので、今後アップグレードしていければと思います。 それではいきましょう! # 完成イメージ ![exhoop_200420_reply.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487789/596291b7-72a8-1675-e23c-63c3141ccb2d.gif) ユーザーアイコンの実装については過去記事を参照ください。 https://qiita.com/naoki00m/items/6430ab0b62766b582c9a # 開発環境 - ruby 2.5.1 - Rails 5.2.3 - mysql - Haml 5.1.2 - Ruby Sass 3.7.4 # 前提条件 - 投稿に紐づくコメント機能が実装できていること(TECH CAMPでいうところ

元記事を表示

rbenvを使用したRubyのバージョン管理

この記事は、rbenvがインストールされている事を前提に書いてあります。
インストールに関しては他記事をご参照してください。

# 目的
Rubyのバージョンを変えずに作業していると、簡単なrbenvのバージョン管理方法を忘れてしまいがちなので、すぐに思い出せるように簡潔にまとめました。

### Rubyのインストール
今回はバーション2.5.7のインストールします。
他のバーションをインストールするときは「2.5.7」の部分を書き換えてください。

“`ruby:ターミナル

# インストールできるRubyのバージョンを一覧表示
$ rbenv install -l

# Ruby 2.5.7をインストール
$ rbenv install 2.5.7

# インストールしたRubyのコマンドを使えるようにする
$ rbenv rehash

# 既にインストールされているバージョンの確認
$ rbenv versions
“`

### バージョンの変更
**PCの全体で使うバージョンの設定**

“`terminal:ターミナル
$ rbenv global 2.5.7

元記事を表示

見たら「ん?」となるエラーバーのグラフ

# はじめに

実験でも数値計算でも、観測に誤差が伴うものをグラフにする時にはエラーバー(誤差棒)をつけると思います。エラーバーのつけ方には流儀がありますが、とりあえず1シグマ、つまり「誤差の乗り方がガウス分布だと仮定した時の標準偏差」をエラーバーとすることが多いです。

で、エラーバーは1シグマなので、「真の値をそのエラーバーの中に含む確率」が68%です。つまり観測点の3つに1つは「真の値」がエラーバーの範囲外にあることになります。なお、ここでは「真の値」を「観測を十分な回数繰り返した時に収束する値」のこととします。

さて、発表を見ていて、たまに「ん?」と思うようなグラフを見かけます。以下では、そんな「ん?」なグラフの実例と、その原因について見てみようと思います。

# ケース1:正しい誤差棒

入力値$x$に対して、観測値$y$が$y=x$となる単純な系を考えましょう。ただし、観測するたびに誤差$\varepsilon$がのるものとします。これを素直にシミュレートすると、こんなスクリプトになるでしょうか。

“`rb
def func(x)
ysum = 0.0
y2s

元記事を表示

rails未経験転職用ポートフォリオ作成手順

随時更新中

#勉強出来るサービス

progate/ドットインストール

paiza

Udemy/セールの時に買う(A8セルフバック25%が最強)

TechPit

Ruby on Rails チュートリアル
https://railstutorial.jp/

#youtubeでエンジニアの方が開発してるのを見る
0から手を動かして作るRailsチャットアプリ【チュートリアル】/とだこうき氏

#質問出来るwebサービス
スタックオーバーフロー
teratail
MENTA

#書籍
「プロになるためのWeb技術入門」
 ▷少々古いですが

元記事を表示

【Rails Tutorial12章】パスワード再設定機能の実装手順を整理してみました【中編】

##はじめに
Railsチュートリアル12章の内容を、少しでも理解の助けとなればと思い、割としっかり目に整理しました!
__備忘録です。__

##前提
Railsチュートリアル1〜11章までの内容が完了していること。
特に、アカウント有効化機能が実装されている事。

##内容
Railsチュートリアル12章の__パスワード再設定機能の実装手順__を、前中後半の3回に分けて整理おります。
中編である今回は、__パスワード再設定メール送信機能の実装__を行っていきます!

前編→[__パスワード再設定用のリソース作成__](https://qiita.com/kurawo___D/items/44b36354f36bbe238d6b)
後編→[__パスワード再設定機能の本実装__]()

##2.パスワード再設定用メールを送信する機能を実装する。
  ➡︎PasswordResetsコントローラのcreateアクションを動作させる部分まで完成させたので、次はパスワード再設定に関するメールを送信する機能を実装していく。

  ➡︎今回はUserメイラーに追加されてい

元記事を表示

macでruby on railsを動かすための備忘録

###macでruby on railsの環境構築の自分用の備忘録

##まずはHomebrewでrbenvをインストールしましょう。
rbenvはrubyのバージョン管理ツールとなります。macには最初からrubyが入っていますが、これを使えば簡単にバージョンを
切り替える事ができます。

`brew install rbenv ruby-build`

インストール出来たか確認

`rbenv -v`
このように、バージョンが表示されます。
`rbenv 1.1.2`

##つぎにrbenvにパスを通しましょう。
`echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile`
そして、ターミナルに設定を読み込ませ直しましょう。
`source ~/.bash_profile`

##rubyをインストールしましょう。
現在インストールできるrubyを確認しましょう。
`rbenv install –list`

バージョンの2.6.5をインストール
`rbenv install 2.6.5`

確認してみましょう!
`rbenv versio

元記事を表示

Kinx ライブラリ – Range 追加機能

# Range 追加機能

以前の以下の記事にも同じ内容を追記しました。

* [Range, Enumerable, for-in](https://qiita.com/Kray-G/items/821eeba150a86d93766d)

## 添え字 for String, Binary, Array, and Range

これら 4 種類のオブジェクトに対して、配列インデックス形式の添え字指定に `Range` を使用できるようにしました。下記の説明は、Range for Range 以外は対象が違うだけで **ほとんど同じ** です。

### Range for String

通常の文字列への要素アクセスは、その位置の文字コードを返す。

“`javascript
var str = “abcdefghijklmnopqrstuvwxyz”;
System.println(str[25]); // 122
System.println(*str[25]); // ‘z’
“`

Range オブジェクトを引数に渡した場合、その範囲の部分文字列を返す。`Stri

元記事を表示

CRUD処理について

# CRUD処理とは
CRUDはcreate、read、update、deleteの頭文字をとった造語で、データベースの処理を表す言葉

# 処理一覧

Create処理(データの追加)

“`ruby

User.create(name:”A”,age:21)
“`

Read処理(データの読み込み)

“`ruby

User.all # データを全て取得
User.find(2)         # 指定したidを取得
User.find_by(name:”A”)   # 最初にヒットしたデータを取得
User.where(age:29)      # 該当のデータ全て取得
“`

Update処理(データの更新)

“`ruby

user=User.find(1)

User.age=22

user.save
“`

Delete処理(データの削除)

“`ruby

user=User.find(1)

user.destroy
“`

元記事を表示

Ruby クラスの継承について

#クラスの継承
あるクラスに定義されたメソッドを、別の新規クラスで利用できるようにした上でクラスを定義すること。
クラスの継承には、親クラスと子クラスの関係がある。
元となるクラスを親クラス、親クラスのメソッドを引き継ぎ新しく作成するクラスを子クラスと呼ぶ。

具体的な例として2つのクラスを作成したいとする。生成するのはパトカーのようなインスタンスを生成するクラスとトラックのようなインスタンスを生成するクラス。どちらも共通して車としての特徴を持っているので、共通する「車としての特徴」を親クラスの中でまとめ、パトカーとトラックそれぞれの特徴はそれぞれのクラスでのみ定義。
パトカーやトラックの上位概念である「車」のクラスを作り、そこへ共通の特徴を定義しておく。車の特徴(親クラス)を継承することで、パトカー(子クラス)とトラック(子クラス)に車の特徴を記述する必要がなくなる。結果、パトカーとトラックだけの特徴を書くだけで済む上、それぞれの特徴が分かりやすくなる。

クラスの継承をする際には、クラスを宣言する際に「<」を用いて、以下のように記述する。 例)クラスの継承 ``` class

元記事を表示

Ruby クラスとインスタンスにおけるメソッドの扱い方

#インスタンスメソッド
インスタンスが使用できるメソッド。クラスに定義しておく。
「インスタンスメソッドを定義したクラス」から生成されるインスタンスが使用できる。

インスタンスメソッドは、インスタンスごとの個別の情報(属性値)を使った処理に使用する。

例)インスタンスメソッドの定義

“`
class クラス名
def メソッド名
# 処理
end
end
“`

例)インスタンスメソッドの呼び出し

“`
インスタンス名.メソッド名(引数)
“`

#属性と属性値
オブジェクトが持つ性質となる情報は、属性またはプロパティと呼ばれ、
それぞれに当てはまる値を属性値、プロパティ値と呼ぶ。
例えば赤色の車の場合、属性「color(色)」は「red(赤)」という属性値を持つ。

これをオブジェクトにも応用し、オブジェクトがどのような属性を持つのかをあらかじめ決めておくことができる。
そして、生成したオブジェクトごとに属性値を個別に持つことができる。
人間が生まれた時から「性別」「血液型」という属性を持っているものの、それぞれの属性値が異なることと同じ。
こうした属

元記事を表示

Docker+PostgreSQLで立ち上げたDBにPosticoでアクセスする

# はじめに
前回記事でRails+PostgreSQL+docker-composeででローカル環境構築を行いました。

前回記事-> https://qiita.com/Rick516/items/c9e829f48f3ee0be26df

今回は前回記事で立ち上げたDBにPosticoというツールで操作できるようにしたいと思います。

# 環境
– macOS Catalina 10.15.4
– ruby 2.6.3
– rails 2.5.3
– docker for mac 2.2.0.4
– PostgreSQL 12.2

# Posticoとは?

Posticoは簡単にいうとPostgreSQLをGUIで直感的に操作できるツールです。

ぽちぽち入力していくだけでデータを追加できたり、コピーできたり、書き換えられたりできるので最高に便利です。

インストールはこちら -> https://eggerapps.at/postico/

今回は前回記事(https://qiita.com/Rick516/items/c9e829f48f3ee0be26df)で立ち上げた

元記事を表示

Ruby クラスとインスタンス

#クラスとインスタンスの概要
車の製造を例にした場合、クラスとは簡単に言ってしまえばひな形となるもの。車で言えば車の設計図。
インスタンスとはクラスを元にして作られるデータのこと。設計図から作られて実際に販売されている車のこと。

# クラス
共通の属性(プロパティ)と処理(メソッド)をまとめたオブジェクトのことで、
クラスを使うことにより個別の属性と処理をクラスから作るオブジェクトごとに分けることができる。
共通の情報はクラスにまとめ、個別の情報はオブジェクトごとに分けられることで、開発・管理・保守がし易くなるという利点がある。
共通している属性や動作をプロパティやメソッドと呼ばれるデータで定義することができる。
クラス名は半角英大文字から始める。

車でイメージした場合以下のようになる
属性(プロパティ名)
・車体
・ハンドル
・タイヤ
動作(メソッド)
・アクセルで加速
・ブレーキで減速

“`
# クラスの定義方法
class クラス名
# 変数やメソッドの定義
end
“`

#インスタンス
クラスからデータや処理を引き継いで複製されたオブジェクト。

インスタンスは

元記事を表示

【Rails Tutorial12章】パスワード再設定機能の実装手順を整理してみました【前編】

##はじめに
Railsチュートリアル12章の内容を、少しでも理解の助けとなればと思い、割としっかり目に整理しました!
__備忘録です。__

##前提
Railsチュートリアル1〜11章までの内容が完了していること。
特に、アカウント有効化機能が実装されている事。

##内容
Railsチュートリアル12章の__パスワード再設定機能の実装手順__を、前中後半の3回に分けて整理おります。
前編である今回は、__パスワード再設定用のリソース作成__を行っていきます!

中編→[__パスワード再設定メール送信機能の実装__]()
後編→[__パスワード再設定機能の本実装__]()

##1.PasswordResetsリソースのモデリング。
  ●__新たなモデルは作らず、必要なデータだけをUserモデルに追加していく感じで進めていく。__
  
  ●__さらにPasswordResetsをリソースとして扱うために、RESTfulなURLを追加していく。__
    ➡︎パスワードを再設定するには再設定用のフォームが必要なので、ビューを表示させるためのnewアクシ

元記事を表示

Rubyの基本的な文法 2

#式
Rubyにおける「式」とは文字列や数値の他に、変数やメソッド呼び出し、演算子式などが含まれる。
すなわち、”文字列”, 1000, (1 + 5)などはすべて式になる。

#式展開
文字列の中で式を使い、式によって得られる値を文字列に含めることのできる機能。書き方は文字列中で#{式}とする。
式展開をする場合は、文字列を作るときに”(ダブルクォテーション)で囲む必要がある。
‘(シングルクォテーション)で囲んだ場合は式展開が行われない。

例)

“`
name = “加藤”

puts “わたしの名前は#{name}です。”
puts “1と3を足した値は#{1 + 3}です。”
“`

#getsメソッド
ユーザがターミナルから入力できるようにするためのRubyに用意されたメソッド。
ユーザが入力した値を文字列としてプログラムに渡す。
getsメソッドが呼ばれると ターミナル画面は入力待ちの状態になる。
そこでキーボードから値を入力してエンターを押すと、getsメソッドは入力した文字をプログラムに返す。

例)打ち込んだ文字が入力されたあと、「入力した値は〇〇です」とター

元記事を表示

【Rails】タグ機能を実装する方法(gem未使用)

#はじめに
Railsアプリのタグ機能実装においてgemを使用するか迷いましたが、
なるべくブラックボックスは少ない方がよいと思い、gemなしで実装しました。
最低限の機能であれば意外と少ない工程で実装ができたので、今回記事にします。

ユーザーが投稿する「本」(Bookモデル)について、「ジャンルタグ」(Genreモデル)を設け、
タグをクリックするだけでそのタグに該当する本を一覧で表示させるところまでです。

誤った処理や冗長な処理がありましたら是非コメントお願いします!

#モデルの実装
「本」は複数の「ジャンルタグ」を持ち、逆に「ジャンルタグ」も複数の「本」を持つ
【多対多】の関係であるため、中間テーブル(BookGenreモデル)を設定します。

各モデルに下記のとおり記載し各テーブルの関連付けをします。

“`ruby:book.rb(抜粋)
has_many :book_genres, dependent: :destroy
has_many :genres, through: :book_genres
“`

“`ruby:genre.rb(抜粋

元記事を表示

RailsへのBootstrap導入手順について

# 背景
Bootstrapをよく使うため、備忘録として書き残しておこうと思った。

## 手順
1.Gemfileに必要なgemを追加してbundle installを実行する。

“`ruby

gem ‘bootstrap’, ‘~> 4.4.1’
gem ‘jquery-rails’
“`
“`ruby
$ bundle install
“`

2.app/assets/stylesheets/appcation.cssの拡張子を.scssに直し以下を記述する。
(既存の記述は消して良い)

“`ruby
 @import “bootstrap-sprockets”;
 @import “bootstrap”;
“`

3.app/assets/javascript/appcation.jsの中の、「//= require~」と書いてる部分の以下を追記する。

“`javascript

(中略)
//
//= require rails-ujs
//= require activestorage
//= require turbolinks

//以下3行を追

元記事を表示

rails 開発日記3 投稿機能

# 投稿機能の実装

*この記事は技術や知識の共有目的ではなく、完全に自己満足のアウトプット用です。

<開発環境>
1. ruby 2.6.3
2. Rails 5.1.6
3. AWS Cloud9
4. GitHub
5. Heroku(予定)
6. sqlite3(develop環境)

今回は投稿、投稿編集、投稿削除の基本的な動作を実装しました。

## 投稿

### postモデルの作成

“`
rails g model Posts content:text user:reference image:string
“`
postテーブルを作るときにreferenceを用いることでテーブルにuser_idカラムが自動で生成されます。
また、foreign_key: trueを記載することで外部キー制約をつけることができます。

### モデルの関連付け

投稿の編集、削除機能を作る事前準備をします。
Postモデルに
“` belongs_to :user “`
Userモデルに
“` has_many :posts “`

これでモデルの関連付けをし、Ra

元記事を表示

CRUD処理短くする

こんな感じで少し短くなる

“`
class PostsController < ApplicationController before_action :set_post, only: [ :show, :edit, :update, :destroy] def index @posts = Post.order(created_at: :desc) end def new @post = Post.new end def create @post = Post.new(post_params) if @post.save redirect_to @post, notice: '投稿を保存しました' else render :new end end def show end def edit end def update if @post.update(post_params) redirect_to @post, not

元記事を表示

OTHERカテゴリの最新記事