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

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

form_withのform.〇〇について

##form_withのform.〇〇について

form.withのform.〇〇について、わからないところがあったので、備忘録としてまとめていく。

###form.text_field

“`ruby:
<%= form.text_field :title %>
“`
幅20文字の入力欄が設定される

###form.text_area

“`ruby:
<%= form.text_area :content %>
“`
40×20の入力欄が設定される

###form.email_filed

“`
<%= form.email.field :email %>
“`
投稿内容に@が含まれていないとメールアドレスとみなされず、エラーになる。
テスト時に注意!

他にもいろいろあるが今回はメールの入力欄にてテスト時にエラーが出たので、備忘録としてまとめた。

元記事を表示

i18nのロケールをJavaScriptにわたす

## 多言語対応のアプリを作成中に詰まった
jQueryとAjaxを使って、親カテゴリを選択すると子カテゴリの候補がプルダウンで表示されるようにしました。
ところが、子カテゴリだけ、デフォルト表記のベトナム語でしか翻訳されてませんでした。

例:親カテゴリ => 質問
  子カテゴリ => 1,Ngôn ngữ và văn hóa
         2,Tập huấn kỹ thuật
         3,Ứng dụng và thủ tục

## 原因
Ajaxで子カテゴリを取得する際、コントローラにロケールを渡してないことが原因でした。

“`category_pulldown.js
$(“#parent”).on(“change”, function () {
// 選択した親カテゴリからIDを取得
var id = document.getElementById(“parent”).value;
// 中略
$.ajax({
type: ‘GET’,
data: { parent_id: id }, // IDをparams[:parent_id]に

元記事を表示

【Ruby on Rails】Chartkickでカラム別集計の円グラフを作成

##はじめに
railsでグラフを挿入したかったのでchartkickを使用しました。
導入自体も容易なので、集計結果の円グラフ化の方法を記載します。

参考にしたページ
-[chartkick公式ドキュメント](https://chartkick.com/)
-[Railsでシンプルなグラフを扱うならchart-js-rails よりchartkickを使うべし](https://qiita.com/Y_uuu/items/0d57748954c7cdb9bbcb)
-[爆速で円グラフを実装する[5分]](https://qiita.com/Y_uuu/items/0d57748954c7cdb9bbcb)

##環境
ruby 2.5.1
Rails 5.2.4.3

##前提と目標
ユーザの意見をまとめた**votesテーブル**の**opinionカラム(integer)**から円グラフを作成する。
opinionカラムの値が1の場合は賛成、0の場合は反対で集計しますが、他の値やNULL値が混ざっている状態で作成します。

**votesテーブル**

|id|opinion|

元記事を表示

Stack Overflow Developer Survey 2020の要点整理

# この記事の目的
世界のディベロッパーのトレンドを追う上で、非常に重要な資料であるStack Overflow Developer Surveyの最新版である2020年版の要点を整理すること。自分の理解のためだけでなく、毎年出されているにもかかわらず、日本語での情報共有が少ない本調査の要点を日本語で整理することで、多くの日本人の開発者が世界のトレンドを理解することを期待する。

原文
https://insights.stackoverflow.com/survey/2020

# 調査概要
・2020年2月に世界中の65,000人以上のディベロッパーにアンケートを実施(注:回答者はアメリカ、インド、ヨーロッパに集中)。
・コロナウイルスが流行る前に調査が実施されたため、仕事や賃金のデータは現時点での情報と異なる可能性があることに注意。

# キーポイント
(1)最も愛された言語はRust, Typescript, Pythonの順番。Rustは五年連続で一位。
(2)回答者の8割がDevOpsが重要だと考えている。
(3)回答者の9割が、プログラミングで壁に当たった時、Stack

元記事を表示

Rubyで繰り返し処理の中で任意の要素数で処理を差し込む方法

## この記事で書くこと :pen_ballpoint:

~~Rubyで数字を整数かどうか判定する文を書こうとしたら、
すぐに自分の中から出てこなかったので
その内容を学びとしてアウトプットする。~~

繰り返し処理の中で任意の要素数で処理を差し込む方法について
学びとしてアウトプットする。

(記述する処理と内容が適さないため、修正しました。 :bow:  )

## 特定の数字の倍数かどうかで処理を分ける :deciduous_tree:

“`ruby

pry(main)> test_num = 1
=> 1
pry(main)> test_num.to_f
=> 1.0
pry(main)> test_num.to_f.to_s.split(‘.’)[1] == ‘0’
=> true

pry(main)> test_num2 = 1.05
=> 1.05
pry(main)> test_num2.to_f
=> 1.05
pry(main)> test_num2.to_f.to_s.split(‘.’)[1] == ‘0’
=> false

(0..1000)

元記事を表示

unless をリライトするために

## 発端

現在見ている他人様のコードに、↓なコードがあるわけだ。

“`ruby:tgt
unless hash.has_key?(“1”) || hash.has_key?(“2”) || hash.has_key?(“3”) || arr1.size == 0 || arr2.size == 0
….
end
“`

実際には否定とか混ってたりする。テスト実行するにも、膨大なコードのど真ん中。
他にも複数条件の `unless` 文がけっこう、、、
俺のスカスカな脳味噌では、挙動が想像出来ない。お手上げ。

ググってみてもド・モルガンの説明なんて、精々 2つの条件で説明してる程度

仕方ないので、確認用の雛形スクリプトを作る。

## コンセプト

まずは、2つの条件で。
条件式の代りに 0, 1 の値を呼ぶ。

“`perl:2.pl
my @d = ( [0,0],[1,0],[0,1],[1,1] ) ;
for my $r ( @d ){
print join “”, @{$r} unless $r->[0] || $r->[1] ;
}

元記事を表示

Rubyでgmailからメールを送信する

## はじめに

参加している勉強会でプログラムを書く練習課題として、rubyでメールを送るというお題があり、実施した内容を以下に記載します。

ちなみに自分が普段使っているgmailから送るプログラムになります。

制限時間がある中での課題だったので、焦りながら実施しましたが、思った以上に参考文献、ライブラリが揃っており、助けられました。

### 実施環境、必要なもの

– OS :mac
– ruby 2.6.6
– Googleアカウント

## 実施手順

### Googleアプリパスワードの取得

アプリからメール送信する際の認証には、googleアカウントのパスワードをそのまま使うのではなく、googleのアカウント設定で発行するアプリパスワードを使って認証を行います。
(パスワードをそのまま使うより、セキュリティ的におすすめな方法)

[Account settings](https://accounts.google.com/)

上記画面から、「セキュリティ」→「アプリパスワード」を選択後、アプリ:メール、デバイス(自分の場合はmac)を選択後に、生成ボタンを押す

元記事を表示

【Ruby】繰り返しの制御

今回は繰り返しの制御について書いていきます。

繰り返しの途中で処理を中断したり、次にスキップしたい場合がありますが、
繰り返しの制御の命令を使うことで実現できます。

##break
breakは繰り返しを中断し、繰り返し処理の中から抜けます。

“`ruby
# サンプルプログラム
num = 0
loop do
num += 1
if num > 10
break
end
end

puts num
“`
前回の記事で書いたものとほぼ同じですが、if式をシンプルな形にしています。
numが10より大きい、つまり11となった時点でloopメソッドから抜け出し、11が出力されます。

##next
nextは次の繰り返し処理に移ります。

“`ruby
# サンプルプログラム
for num in 1..10
if num.odd?
next
end
puts num
end
“`
odd?メソッドは値が奇数の場合にtrueを返します。
よって、変数numの値が奇数の場合はnextを通るので、変数numの値の出力はせずに次の繰り返し処理

元記事を表示

ParsingとStoringって何

##Parsingって何
Parsing = Read + Convert
Libraryにあるテキストを読んでRubyで扱えるようにオブジェクトに変えること

##Storingって何
データファイルに情報を送ること
Storing is to put information into a data file.
パソコンが壊れてもアクセスできる!(クラウド的な?)
This way you can access your data even when someone throws your laptop from a window?.

元記事を表示

【Rails】複数のDB処理をまとめる transaction を実装してみた

# はじめに
Rails でアプリを開発していて、複数テーブルのデータを同時に作成する、という処理を実装していた。
その処理において、どちらかの処理が失敗した場合に双方の処理をなかったことにする transaction という概念があることを知ったので備忘録兼アウトプットとして、 transaction についておよび、実装した内容について書く。

# transaction とは
「transaction」という言葉の定義を調べると
【処理、取り扱い、処置、業務、取引、売買、会報、紀要、議事録】 このように出てくる。

ITやプログラミングにおいては
「複数の処理を一つにまとめた分割不可能なもの」

と定義づけることが出来そうです。

こちらの記事がトランザクションの概念について非常にわかりやすいくまとめられており、参考にさせていただきました。

[「トランザクション」とは何か?を超わかりやすく語ってみた!](https://qiita.com/zd6ir7/items/6568b6c3efc5d6a13865)

# transaction メソッド使い方
– 複数の処理を一つのま

元記事を表示

railsでrspecを使用中にハマったこと

初心者がrailsでrspecを用いてテストを記述する際にハマったことを残しておきます。

rspecでcontrollerのテストを試みたところエラーが頻発しました。どこを直してもうまくいかなかったので、一度参考サイト通りに記述し、何が問題かを調査することにしました。しかし、それでもうまくいかない。。。
そこで設定を見直したところ、controllerのテストはrails5から非推奨になっており、以下のように変更する必要がありました。

model       → model(そのまま)
controller     → request
画面遷移のテスト → system

のようにフォルダを作成する必要があり、rails_helperの設定も上記にならい記述する必要があった。
参考記事はcontrollerとrequestが混在しているため注意する必要がある。

また、最近のrailsではコントローラーのテストは非推奨になり、
create,destroy,edit,updateのテストが記述してあれば十分になったらしい。

元記事を表示

railsで開発中にAWSから高額請求されたが、、

はじめに以下の記事にあるように、railsでアプリを開発中に初期設定のミスが原因で高額請求に至った。
https://qiita.com/381704/items/d5216295eadd67eb9e8c

完全に注意不足であり、しっかり利用してしまったあとなので支払うしかないと思っていたが、駄目元でAWSのサポートセンターに以下のようなメールを送ってみた。(本文を載せるのは抵抗があったが、証拠&同じ状況の人の希望になればと思い残しておく)
スクリーンショット 2020-07-07 16.17.45.png

2日後にAWSサポートより返信が来た。返信内容には、現在料金が発生しているRDSのインスタンスとスナップショットの削除をすることとあり、その後に返金が可能かの相談にはいるということだ。
内容通り、RDSの削除

元記事を表示

Rails5でECサイトを作る④ ~ヘッダーとフッター~

# はじめに
架空のベーカリーで買い物できるECサイトを作るシリーズ、[Rails5でECサイトを作る③](https://qiita.com/GreenFingers_tk/items/d77555311286d966462e)の続きです。
今回は、ヘッダーとフッターを作ります。せっかくなのでレスポンシブ対応にしてみました。

# ソースコード
[https://github.com/Sn16799/bakeryFUMIZUKI](https://github.com/Sn16799/bakeryFUMIZUKI)

# 配色
いきなり余談ですが、サイト全体のテーマカラーを決めました。店名(架空)が文月なので、夏らしい青系統の色でまとめます。
カラーコードも一応載せておきます。ご参考までに。

濃青……#120136、rgb(18,1,54)
中青……#035aa6、rgb(3,90,166)
淡青……#40bad5、grb(64,186,213)
ワンポイント黄……#fcbf1e、rgb(252,191,30)

# ヘッダー
app/views/layouts内に、ヘッダー用の

元記事を表示

URLエンコードについて調べてみた

# WEB上のPDFファイルが見れない
なぜかアップロードしたPDFファイルがリンク切れになっていたので
その調査内容を記録します。

#### ユーザ環境
* MacBook
* Chrome

#### アプリケーション環境
* AWS EC2
* AWS S3
* ruby 2.6.5
* Rails 5.0.7.2
– refile (0.6.2)
– refile-s3 (0.2.0)

#### 見れないファイルのパターン
チルダ「~」がファイル名に含まれているファイルはリンク切れになってしまう。

#### ファイルリンクを作成するコード

“`slim

li
= link_to attachment_url(file, :file), target: ‘_balnk’
b-icon(icon=”attachment”)
span.file__name = file.file_filename
“`

#### 実際に生成されるhtml
“` html

元記事を表示

[Rails]新しいページを増やす方法

##Ruby on Railsのページを増やす手順
忘れないよう、自分用のメモ書きです。

手順
1.configのrouteファイルにURLと対応するアクションを記述
2.controllerに該当するアクションを追記
3.viewフォルダにhtml.erbファイルを新規作成

※まったく0からのサイト作成ではなく
既存のプログラムに追加する想定。

## routeファイルにURLとアクションを記述
〜書き方〜

HTTPプロトコル ”ページを表示させたいURL” => ”コントローラ名#アクション名”
のように記述します。

※「HTTPプロトコル」としましたが、ほとんどの場合「get」か「post」のどちらかです。

以下に具体例を示します。

“`ruby:route.rb
get “images/index” => “images#index”
“`

〜/images/indexというURLへリクエストを受けた時に、
このプログラムでは、imagescontrollerの中の、indexアクションを実行しますという書き方になっています。

## controlle

元記事を表示

「bundle install」するとgem系のファイルについて大量にgit差分が発生してしまう

### 発生した背景
新しいgemを入れるときに、以下のコマンドを実行するとgitに大量に差分が発生することがあります。

“`:コマンド
bundle install –path vender/bundle
“`

(スクショの「Unstaged Files(1)」というところが、10000とかになったりする。ごめんなさい、再現ができなかったです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647299/712e9a14-4552-8860-7bf2-f638093e3874.png)

この件について対応方法を検討したいと思います。

### 環境
| 項目 | 内容 |
|:—————–|:—————

元記事を表示

rails メソッド

# railsメソッド
human_attribute_nameで多言語対応できる
const_get
https://docs.ruby-lang.org/ja/latest/method/Module/i/const_get.html

元記事を表示

Ruby on Rails マイグレーションを取り消す

# 最新のマイグレーションを取り消す
最新のマイグレーションを取り消すコマンドは
“`rails db:rollback“`

# 特定のマイグレーションを取り消す
特定のマイグレーションを取り消す場合は
“`rails db:migrate:status“`
で取り消したいマイグレーションファイルのMigration IDを確認し
**rails db:migrate:down VERSION = 取り消したいマイグレーションファイルのMigration ID**
を実行する。

元記事を表示

Ruby学習要点(基礎)

– 文字列はクォーテーション( ‘ もしくは ” )で囲う。また、クォーテーションは必ず半角で記述する。

– putsの後には半角スペースをあける必要がある。

– コメントアウトは「#」を行の先頭に記述
※複数行のコメントアウト
mac:「command + /」
windows:「ctlr + /」

– 変数を使うのは、必ず変数を定義(変数名 = 値)した後でなければならない。(プログラムが上から順に実行されるため)

– 変数名は自由に決めることができるが、Rubyではいくつか命名のルールがある。特に、2語以上を組み合わせた変数名をつけるときは、アンダーバー(_)を用いる。

– 変数の値を文字列の中に含める方法がある。文字列の中で、#{変数名}とすることで、変数を代入している値に置き換えて、文字列に含めることができる。これを「変数展開」と呼ぶ。

– ダブルクォーテーションを使った文字列の場合しか変数展開はされない。シングルクォーテーションの場合は変数展開が行われず、そのまま文字列として出力されてしまうので注意する。

– 配列も1つの値なので、変数に代入することができる。

元記事を表示

Sinatraで家族用todoリストを作る

#Sinatraで家族用todoリストを作ってみる

Sinatraでアプリを一つ作ってみようということで作成しました。
と言っても、ベースとしての機能はこちらを参考にしています。

[Sinatra入門 (全17回) – プログラミングならドットインストール](https://dotinstall.com/lessons/basic_sinatra_v2)

***

今回は、家族で使えるtodoリストになるように機能を追加します。
追加する主な機能としては以下の4点となります。

– 投稿時間の表示
– ユーザーを選択するセレクトボックス
– ユーザーに対応したtodo表示
– ユーザーの新規登録

sinatra入門からのステップアップとして良い題材になると思います。
まず初めに完成アプリの画面です。
![view90%.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644402/bdbfc4c9-0ed6-8c2d-e9de-5a6b70995cee.png)

以降コー

元記事を表示

OTHERカテゴリの最新記事