Ruby関連のことを調べてみた2021年01月23日

Ruby関連のことを調べてみた2021年01月23日

form_withを使って、ユーザーが新規作成される仕組みを理解する

webサービスで新規登録やユーザログインのときに使われる、form_withというヘルパーメソッド。

Railsチュートリアルなどで突然登場して、なんとなく使い方が分かってるけど説明はできない「曖昧状態」になっていませんか。

ぼくもまさにそのひとり。

今回は、form_withを使って、ユーザーが新規作成される仕組みを理解する記事を書いていこうと思います!

## そもそも「フォーム」とは?

>
* nameとvalueがペアになってサーバに送られる
>
* nameとvalueはinputやselectやradioなどに付与される
>
* action属性に指定されたURLに対して入力値が送られる

引用記事:
[https://qiita.com/DaichiSaito/items/cd66115569b0a75f1bfa#11-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%A8%E3%81%AF%E3%81%8C%E6%9B%96%E6%98%A7]

この3つをはじめてみたとき???と

元記事を表示

ruby のLoadErrorでつい忘れがちなこと

# よく出るこういうエラー

Traceback (most recent call last):
2: from /Users/*******/.********/********.rb:5:in `


1: from /Users/******/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’
/Users/******/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’: cannot load such file — parseconfig (LoadError)

今回はparseconfigというgemファイルをそもそもインストールしていなかったのが原因でした

##解決策
gem install parseconfig -v <バージョン名>

元記事を表示

[Ruby]文字列と整列の変数展開に関して(+英語)

こんばんは、たにーです。

今回は、Twitterでもつぶやいたことがある
Rubyにおけるメソッド(文字列と整数の変数展開)に関してです。

これはややこしいものかなと思うけども、個人的には
英語として分解して理解すればよりすっと理解できるのではと思います。

いつもですが、なにか略をみた際に、
なぜその英語表記なのか(略されているのか)と私は気になってしまいます。笑

#文字列と整数の変数展開

学習した変数展開は、二つあります。
①.to_s
②.to_i

それらの意味(使い方)と英語で分解してみると、下記の通りになります。

| メソッド | 機能 |略|
|:-:|:-:|:-:|
|.to_s | 整列 → 文字列へ |to string (意味:文字) |
|.to_i | 文字列 → 整列へ |to integer (意味:整数) |

**参考例**

.to_s に関して

“`ruby:string.rb
age = gets.to_s
puts “私の年齢は、#{age}歳です。”
“`

to_iに関して

※こちらに関して例が思いつき

元記事を表示

投稿2日目

投稿2日目
今日はRuby超入門155ページまで
しっかりと自分と向き合おう。
#プログラミング#エンジニア#Ruby#rails

元記事を表示

ExcelでCSV閲覧の際の0落ち問題

# 概要
WEBアプリケーションからダウンロードしたCSVをエクセルで開くと
0埋めしている社員番号から0が消えて表示される問題があったので、
対応内容をまとめました

# 開発環境
* ruby 2.6.5
* Rails 5.1.7

# まず、CSVを確認
出力されるCSVに問題はなく、0埋め済の社員番号が記載されていた。

“`csvs:sample.csv

employee_number,address
012345,tokyo
“`

なのにエクセルで開くとこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532385/2caca506-b617-0d6e-9fe5-d3fe917ba226.png)

# エクセルで0落ちされないようCSVを加工
0落ち問題対応策の記事は多く、その1つは
CSVに変更を加える方法だった。
エクセルで文字列として表示できるよう、以下の記述に変更すれば
確かに0落ち問題が起きなかった。

“`csvs:sample.cs

元記事を表示

フレームワークとは

今回はフレームワークについて学習をしました。フレームワークとは何か、Ruby,PHP,JavaScript,CSSの代表的なフレームワークを公式サイトとURLと共に紹介します。
説明不足があると思いますので、気になったフレームワークを公式サイトで確認してみて下さい。

#フレームワークとは

「フレームワーク」という言葉には、「枠組み」という意味があり、アプリケーション開発においては、テンプレートの役割を持っています。テンプレートの機能は、開発を行う際に頻繁に必要とされる「基礎的な機能」をまとめて提供してくれるものです。
例えば、ログイン認証機能、新規投稿機能、検索機能などアプリケーション開発においてほとんど共通して使われる機能がパッケージ化されています。
そのため、フレームワークを用いることで開発を高速化させることが出来ます。
どれくらい便利なものかというと、ログイン認証を仮に自分で1から作成したとします。その場合、作らなければならないのが、ユーザーネーム、パスワードの欄を作り、それを認証、弾く機能、更にそれらを管理する画面など様々なところを作っていかなければなりません。しかし、フ

元記事を表示

続きを読む(truncate)の実装

##環境
・rails 5.2.4

##続きを読むの実装
snsでよくある続きを読むの実装の紹介をさせて頂きます。。

とっても簡単で以下のように末尾にtruncateと書くだけです。

“`php:images/index.html.erb
<%= image.introduction.truncate(20) %>
“`
20文字以上で…で表示されるという意味です。

この記述をすれば、以下のような表示になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1008940/a8b867a5-c94e-d4d5-d554-be66a7a14243.png)

ちなみに、続きを読むのリンクは以下の記述で実装できました。

“`php:images/index.html.erb

<%= image.body.truncate(20) %>
<% if image.body.size >= 20 %>
<%= link_to image_path(image

元記事を表示

DRY原則・CoC原則とは

DRY(ドライ)原則、CoC原則について学習したので復習をかねてアウトプットします。

#DRY原則とは

Don’t Repeat Yourselfの略で、「繰り返しを避けるという意味合いがあります。
つまり、別々の場所で同じものを書いてはいけないよと言うことです。
なぜならば、コーディングをする上で同じコードを複数の場所に書くことは、その分だけ管理する場所がどんどん増えていくことを意味し、それだけ手間や時間が削られて行くからです。
はじめは数箇所だけだったとしても作業を重ねていくうちに増え、100箇所分すべて修正する事になった場合はどうでしょうか。
一箇所の修正だけならば早く解決できます。

手作業の修正ならばなおさらバグや変更が減り、作業効率を向上してくれるでしょう。

もちろん、必ずしなければいけないということではなく、今後仕事として依頼を受ける時に全部の箇所を覚えていくことは難しくできる限り修正箇所を増やさないためにも頭の片隅においておくといい考え方です。

#CoC原則とは

Convention over Configurationの略で、「設定よりも規約を優先する」

元記事を表示

Rails gem ‘devise’でログアウトをコントローラから一発で呼ぶ方法

#Rails gem ‘devise’でログアウトをコントローラから一発で呼ぶ方法
今日はrailsのコントローラで一発でログアウトさせるということで記事をかいきます!

結論としては
reset_session
これをコントローラーないに記述するだけでした笑

今回なぜこれを使ったのかと言いますと
現在ユーザ退会機能を作っておりまして、その退会処理の後にログアウトさせる
必要があったために使いました:relaxed:

これ便利なメソッドなので是非皆さんも使ってみてくださいね!!

元記事を表示

BASIC認証とは

自分の備忘録用

Basic認証とは

ベーシック認証(Basic認証)とはWebサイトの特定の領域、つまりページやファイルにアクセス制限をかけることができる認証方法の1つ。ベーシック認証をかけると、認証をかけたWebサイトにアクセスしようとしたとき、下の画像のような認証ダイアログが立ち上がって、ユーザー名(ID)とパスワードの入力が求められる。

設定方法

まずトップページのコントローラーに before_action :basic_authを定義する。

「basic_auth」は変数名なので名前はこれじゃなくてもいい。

“`ruby
class アプリ名Controller < ActionController::Base before_action :basic_auth private def basic_auth authenticate_or_request_with_http_basic do |username, password| username == 'ユーザー名' && passw

元記事を表示

refileの画像保存先を変更した際のこと

画像のアップロードにrefileを使用していて、ファイルの保存先を変更することがあったので備忘録として書きます。

##開発環境
– Ruby 2.6.3
– RubyOnRails 5.3.4

“`Gemfile.

# 画像アップロードにrefileを利用
gem “refile”, require: “refile/rails”, github: ‘manfe/refile’
gem “refile-mini_magick”

“`

###保存先の変更
デフォルトだとアップロードされた画像は tmp/uploads/store に保存されます。
今回は public/uploads/ に変更したかったので、configのinitializers配下にrefile.rbというファイルを作成し、下記のように設定を加えます。

“`config/initializers/refile.rb

Refile.backends[‘store’] = Refile::Backend::FileSystem.new(‘public/uploads/’)

“`
これで、保存先を変更

元記事を表示

Ruby初心者向けプログラミング問題10選を解いてみた(上)

何か投稿してみようということで、少し前に解いた練習問題を貼っていきたいと思います
高度なテクニックは全く使っていないので、初心者の方も安心してご覧ください

コード、本文ともに見づらいと思いますがご勘弁を…

# 素晴らしき元サイト様
[アウトプットのネタに困ったらこれ!?Ruby初心者向けのプログラミング問題を集めてみた(全10問)](https://blog.jnito.com/entry/2019/05/03/121235)

# カレンダー作成問題
## 問題文

問題文(折りたたみ)
>Date クラスを使って、今月の1日と月末の日付と曜日を求め、次のような形式でカレンダーを表示させてください
>
April 2013
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28

元記事を表示

gem wheneverをdockerで使う

## 環境

Docker Engine 20.10.2
Ruby 2.7.0
Bundler 2.1.4

## 手順

wheneverをGemfileへ

“`
# Gemfile

source ‘https://rubygems.org’
git_source(:github) do |repo| “https://github.com/#{repo}.git” end

gem ‘whenever’
“`

コンテナにcronをインストール

“`docker
# Dockerfile

FROM ruby:2.7.0

RUN apt-get update && apt-get install -y cron && apt-get install -y vim

WORKDIR /usr/src/app
COPY Gemfile .
COPY Gemfile.lock .
RUN bundle install
“`

コンテナのsetupとwheneverの設定

“`bash
$ docker build -t test_image .
$ docker cr

元記事を表示

【Rails】seedとFakerでランダムなサンプルデータを作成

#はじめに
データベースに予め大量のデータを入れておきたいとき手動では大変です。
この記事ではseedとFakerを使って、自動でランダムなサンプルデータを作成する方法を紹介します。

####seedについて
seedファイルは、データベースにあらかじめ入れておきたいデータを定義しておくものです。
データをあらかじめ定義し`rails db:migrate`することで、簡単にDBへデータを投入できます。

####gem ‘faker’について
Fakerとはランダムな値を入れられるgemです。
 Gemfileの中にgem ‘faker’を追記し、 bundle installコマンドを実行することで使用出来る様になります。

詳しくは下記の公式ページを参照してください。
【公式】
https://github.com/faker-ruby/faker

#開発環境
ruby 2.6.5
Rails 6.0.3.4
faker 2.15.1
gimei 0.5.1

#fakerインストール

“`:Gimile
gem ‘faker’
gem ‘gimei’
“`
`

元記事を表示

パッケージ mysql-server は利用できません。 というエラーについて

こんにちは! 
独学でRailsアプリを作成し、AWS EC2上に手動でデプロイしたとき想像以上に大変だったので、出会った主なエラーとその解決方法を複数の記事に分けて記します。同じ様にエラーで悩んでいる方にとって参考になれば幸いです。

##環境
ローカル環境
・Ruby 2.7.2
・Ruby on Rails 6.0.3
・MySQL 8.0.2
EC2上の環境
・OS:Amazon Linux 2

今回はこの記事を参考にデプロイしました。
https://hackmd.io/4_1NYUTBSaSsOC8cur7WhA?view

##事象
EC2インスタンスにSSH通信でログインし以下のコマンドでパッケージをインストールしました。

“`
$ sudo yum -y install git make gcc-c++ patch openssl-devel libyaml-devel libffi-devel libicu-devel libxml2 libxslt libxml2-devel libxslt-devel zlib-devel readline-devel

元記事を表示

RubyとHTMLにおけるクラス名の書き方の違い

# クラス名の付け方の違い
1.HTMLでのクラス名の付け方は、このようにclass=”#”として名付けることができます。


〇〇

2.Rubyでのクラス名の付け方は、class:”#”として名付けることができます。

#最後に
私の学習順序ではHTMLが先だったのでclassの記述の仕方についてはclass=”#”でしかないと思っていましたが、rubyの記述で同じ記述をした場合rubyにおけるクラスとインスタンスの方のclassが与えられてしまっていたので、ここは覚えておかなければいけないポイントなのではないかと思い、記事を書かせていただきました。このほかにも上記のようなlink_toの書き方であったり、form_withなどはHTMLと書き方が違うのでまた必要だと思ったことは書かせていただきます!!

元記事を表示

mapメソッドの実践的な使い方

#課題
皆さんは、ポートフォリオ等でオリジナルアプリを作成する際に下記のようなことで困ったことはありませんか?

– マイページで口コミを投稿した店舗(商品)を一覧で表示したいが、店舗(商品)を取得する方法がわからない。

イメージとしては以下のような感じです。※paramsではユーザーidのみ取得可能

“`ruby:histories_controller.rb
def index
user = User.find(params[:user_id])
@reviews = Review.where(user_id: user.id)
end
“`

DB図
![DB図_Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759659/2906f6c2-8292-ac61-927a-8bb1e4d5d2a2.png)

ここから、ビューファイルに店舗一覧を表示したいと思うと以下のように無理やりになってしまいます。
※一部抜粋

“`erb:views/histor

元記事を表示

単体テストエラー 〜ActiveRecord::StatementInvalid: Mysql2::Error::ConnectionError: Lost connection to MySQL server during query〜

自分の備忘録として残しておきます

エラー内容

ActiveRecord::StatementInvalid:
Mysql2::Error::ConnectionError: Lost connection to MySQL server during query

![スクリーンショット 2021-01-22 12.27.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614674/4cbe7797-610d-211c-d843-343e8da50f59.png)

スクショを見る限り一つ目のテストは成功してるのに二つ目以降のテストは失敗している、、、なぜ?
可能性としてはテストに負荷がかかりすぎてread_timeout以内に処理が終わらなかった。

“`ruby:spec/models/ファイル名_spec.rb

RSpec.describe UserAddress, type: :model do
before do
@user = Fact

元記事を表示

単体テストのエラー 〜ActiveRecord::RecordInvalid: Validation failed: Email has already been taken〜

単体テストして変なエラーが出たので備忘録として残しておきます

結論

「そのメールは既に登録されているよ」って怒られてます。

この時僕はFakerでメールを作らずに手入力で入れていてのでテスト内でuserが何度も作成されるにあたって手動で入れてしまうとメールが重複してしまった、と言うことになります

以下コード

“`ruby:fuctories/user.rb

FactoryBot.define do
factory :user do
nickname {“tarou”}
email {“sanple.sample@com”}
#emailを以下に変更⬇︎
email {Faker::Internet.free_email}
#emailを上記に変更⬆︎
password {“a1234567”}
password_confirmation

元記事を表示

Ruby on Rails6でのjQueryの実装方法(Windows10 + 仮想環境)

Rails5までの実装方法を試してみてもjQueryが動かなかったので調べてみると、
Railsのversionが上がり、Rails6になってからはjQueryの実装方法が変わったようなので、
自分の勉強もかねて、読んでくださる方々に共有させていただきます。

※プログラミング初心者ですので、おかしい点などがありましたら指摘してもらえると助かります。

## 開発環境
– 使用PC:Windows10
– 仮想環境:vagrant + CentOS7
– テキストエディタ:VSCode
– Ruby version:ruby2.5.8
– Rails version:6.1.1

## 実装したい環境

Ruby on Rails6での環境でjQueryを実装したい

## 目次
1. jQueryインストール
2. application.jsのファイル先の変更
3. Webpackの設定
4. application.jsの設定
5. 外部ファイル作成

#### 1. jQueryインストール
Rails5までのverでは、GemfileにjQueryを記載して`bundle

元記事を表示

OTHERカテゴリの最新記事