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

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

MySQLが起動しない(Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2))

#開発環境
– Ruby 2.5.8
– Rails 5.2.1
– MySQL 8.0.22

#新規開発をしようと「rails db:create」をした時のこと・・・
ポートフォリオの大方の設計が出来上がってきたので、アプリの大枠だけでも作成しようと`rails new`をして新規アプリを作成し、`rails db:create`でDBを作成しようとしたところ、エラーで止まった。

“`terminal
rails db:create

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
Couldn’t create ‘myPF_development’ database. Please check your configuration.
rails aborted!
Mysql2::Error::ConnectionError: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
“`

元記事を表示

duplicate key value violates unique constraint “XXXXXX”の解決方法

ruby “2.6.4
rails”, “~> 6.0.0”
postgressql

“`ruby
bin/rails db:drop
“`
“`ruby
bin/rails db:create
“`
“`ruby
bin/rails db:migrate
“`
“`ruby
bin/rails db:seed
“`

あとは
ファイル名、英語のスペルが間違えていないか確認

元記事を表示

学び直し rubyがミニツク編 Part1

Rubyの基礎から学び直しましょう。railsの前にまだまだRuby言語の理解と知識が足りてないから。

今日の教科書
[Rubyがミニツク](http://www.minituku.net/courses/566428009/contents/685444640.html)

#コーディング規約
[コーディング規約](https://shugo.net/ruby-codeconv/codeconv.html)
実は読んだことがなかったんだ…。なんとなくで進んできてしまった。

##メモ

– インデントはスペース2回。普通にタブ使ってました。
– クラスや要素の区切りに改行、最初と最後はしない。
– コメントはメソッド中には書かない。(モジュールとか公式のメソッドは別)#で書く。そもそもコメントが必要なら[リファクタリング](https://ec-orange.jp/ec-media/?p=24443)せよ。
– 論理演算には!や&&や||を使用する.
– スコープが狭いループ変数には、i, j, kという名前をこの順序で使 用する。
– スコープが狭い変数名には、クラス

元記事を表示

ridgepoleでRANGEパーティショニング

以前、[ridgepoleでRANGEパーティショニング(したかったけどワーニングが気持ち悪いから諦めてSQL書いた件)](https://qiita.com/taka0125/items/05740de838494c9c7548) という記事を書いた。
これは、ridgepoleでの管理を諦めて生SQLを叩いていた。

しかしその後、複数人で開発しているとちらほら問題が…。
そこでもう少し試行錯誤してみて、ちょっと無理矢理だけどridgepoleにスキーマ管理させる方法を見つけたので書いておく。

# やり方

`options` に無理矢理クエリを組み込む!w

“`ruby
comment = “コメント”
partitions = []
partitions << "PARTITION p201610 VALUES LESS THAN ('2016-10-01') ENGINE = InnoDB" partitions << "PARTITION p201611 VALUES LESS THAN ('2016-11-01') ENGINE = InnoDB" # partit

元記事を表示

Ruby初心者が環境構築するため rbenv、RVM、bundler、gem 等をレポート

## 背景
Ruby を始めるにあたって環境構築をしようとしたところ、rbenv、RVM、bundler、gem、etc.. のよう言葉が出てきて混乱しました。
ある程度理解できたと思うのでまとめます。

## Rubyのバージョン
ルビーのバージョン2.3で作ったアプリは、ルビーのバージョン2.6が入った端末だといじれない。
ルビーのバージョン2.6で作ったアプリも同様にルビーのバージョン2.3が入った端末だといじれない。
一つの端末に複数バージョンのRubyは共存できない。(rbenv、RVMとか使わない場合)

## rbenv、RVM とは
入れると1台の端末で異なるバージョンのRubyが共存できるようになる。
パッケージ管理ツールとして紹介されている。

▼使用例
・状況
去年から開発してるアプリAのRubyバージョンは2.3
来月から開発するアプリBのRubyバージョンは2.6を使いたい

・問題点
アプリAとアプリBを同時に開発したいが一つの端末に複数バージョンのRubyは共存できない、どうしよう・・

・解決方法
rbenv、またはRVMを使うと一つの端末に複数バージョ

元記事を表示

Docker環境のRuby on RailsアプリをCircleCIで自動ビルド&テスト(RSpec)する方法

# はじめに

こんにちは、Masuyama です。

私は [CircleCIのユーザコミュニティ](https://circleci.connpass.com/)の運営に参画させていただいているので
本記事では、以下のような環境でRuby on Railsアプリの自動ビルド&テストを実現してみたいと思います。

– コンテナ環境:Docker (docker-compose)
– フレームワーク:Ruby on Rails
– テスト方法:RSpec
– CI/CDツール:CircleCI

CircleCI、Docker を使ったことが無い方でも理解できるように解説しているつもりですが
質問がありましたら気軽にコメントをいただければと思います。

# CircleCIとは?

## 概要

CircleCIはCI/CDをクラウド上で行えるツールであり、**ビルド・テスト・デプロイ**の3つを自動で行なえます。

どのような環境でビルド・テスト・デプロイを行うかは config.yml というファイルを作成して指定します。
プロジェクト直下に .circleci というフォルダを作

元記事を表示

フィボナッチ数列を求めるプログラム

こんにちは!フィボナッチ数列というのを求める課題があったので頑張ってやってみました:v:

初心者なので間違っているところとかあったらご指摘お願いします:bow_tone1:

“`ruby:fibonacci.rb
def fibonacci(n)
1.step(n, 2)
.map{|i| 2 * ((n – i + 1)..n).inject(:*) / (1..i).inject(:*) * 5 ** (i / 2)}
.sum / 2 ** n
end
“`

これで合ってますか :sweat_drops:

# この記事を書いた理由

まずはじめに一応書いておくと、フィボナッチ数列とは以下で定義される数列 $F_n$ ですね。

“`math
\begin{align}
& F_0 = 0 \\
& F_1 = 1 \\
& F_{n} = F_{n-2} + F_{n-1} (n \geqq 2)
\end{align}
“`

さて、フィボナッチ数列を求めるプログラムなんて「フィボナッチ数列 (何らかのプログラミング言語)」などと検索すれば山ほど

元記事を表示

【個人アプリ作成】情報管理アプリ制作7日目

昨日は着手できずでした、、、、

今日はもうひたすらHTML/CSS。。ただ、自分で創作してみるとHTMLとCSSの扱い方が、かなり分かりました。

#今日の作成画面

![スクリーンショット 2020-12-05 21.54.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/759485/266e4c83-671d-0a0b-2866-6071151406d7.png)

自分で試行錯誤しながらではかなりできたと思います。
fixのメソッドを使うと画面固定できたりとCSSはやってみると面白く、沼にはまらない程度に実用的なメソッドをどんどん付けていきたいと思います!

#今日の良かったこと

>・部分テンプレートに拘ったので、応用できること。
・自分の想像の80%くらいのものができて自信がついた。

元記事を表示

初投稿

Ruby on Railsにて開発をしていたところ、image_tagaで指定した画像が本番環境でのみ表示されない現象にハマったので、その解決方法を記録しておきます。

## image_tagのパス指定

####app/assets/images直下に画像を格納する場合

“`ruby:hoge.rb
<%= image_tag '/assets/hoge.png' %>
“`

画像のパス指定において**’/assets/hoge.png’**とし、’/assets/images/hoge.png’と記述しないのがポイント。
まんまとimagesを記述してしまっていた…。

ちなみにassetsディレクトリ内のファイルや画像はアセットパイプラインという仕組みのおかげで読み込みが早くなるため、開発者が用意する画像はpublicディレクトリに格納せず、こちらに格納するそう。

コード修正後、本番環境にて確認したが、相変わらずエラー表示…。
ログをたどると、どうやら指定の画像が見つからないよと言われている。

原因を調べたところ、アセットパイプラインによってコンパイル

元記事を表示

pay.jpがAWS(本番環境)で作動しないエラーから環境変数を学ぶ

##背景
PAY.JPを利用した決済システムがローカル環境では問題なく動作するのに、本番環境(AWS,EC2)ではエラーとなってしまった。

![スクリーンショット 2020-12-05 18.08.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864534/d9ffd316-3bc2-452d-45a2-3ca5af865198.png)

その過程で環境変数について初学者なりに学んだことを備忘録として記録。

##問題
①AWSに環境変数として公開鍵、秘密鍵の設定を行っていなかった。
②ENVファイルに記載している鍵情報を読み込む設定ではエラーが解消されない

##解決
①AWSに鍵情報を環境変数として設定する
②ENVファイルからではなく、credentilas.ymlから鍵情報を読み込むように設定
③②の為に、credentials.ymlに鍵情報を環境変数として設定

##詳細
①AWSの環境変数の設定
本番環境への設定なので、EC2ユーザーでログインして、
`[ec2-user@

元記事を表示

【Rails】投稿を「何分前」「何日前」と表示したい!!と思ったので実装してみた

## 時間

[![Image from Gyazo](https://i.gyazo.com/9e95928dea8657f772e9a03b8b86328c.png)](https://gyazo.com/9e95928dea8657f772e9a03b8b86328c)

よく見るこんなやつです。
ぼくはSNSサービスを開発していたので開発日数は「何分前」「何日前」とかにしたかったんですよね。
そこで調べたらめちゃくちゃ簡単に実装できることを知りました。

## 結論
time_ago_in_wordsメソッドを使う

“`ruby
<%= time_ago_in_words(post.created_at) %>
“`

上記の写真のように作るのであれば以下のコードを使えばOKです。

“`ruby
<%= time_ago_in_words(comment.created_at) %>前
“`

めちゃくちゃ簡単ですね笑
ささっと実装しちゃってくださいませ〜。

おわり
written b

元記事を表示

【Rails】Rails6でAPIモードの環境構築をしっかりやる

# はじめに

最近、`RailsAPI+React`のような形で、Webアプリケーションを構築するスタートアップ企業をしばしば見かけます。

今回は`React`等にフロント側を委託し、RailsはAPIに専念することを前提とした環境構築と、その解説をしていきます。

# 環境

– `Ruby`:2.6.3
– `Rails`:6.0.3

# RailsAPI環境構築
## 【1】`rails new` で雛形を作成

今回は下記を指定した上で`rails new`を実行し、`RailsAPI`の雛形を作成します。

– `API`モード
– DBを`MySQL`
– `Rails`のバージョン`6.0.3`

“`sh
rails _6.0.3_ new hoge -d mysql –api
“`

このコマンドを実行すると、自動で必要なファイルを作成してくれます。大変便利ですね。

## 【2】`rails db:create`でDBを作成

“`sh
rails db:create
“`

DBを作成しておきます。マイグレーションファイルがまだ存在しないので、`r

元記事を表示

投稿を削除する時にアラートを表示させる

##使用環境

ruby 2.6.5
rails 6.0.0

##目標
投稿した記事を削除する際にアラートを表示させる。

##実装
ポートフォリオなどを作成するときに削除ボタンを作ることがあるかと思います。僕の場合はこちらですね↓

“`ruby
<%= link_to '削除', song_path, method: :delete, class:'song-destroy',data: {confirm: "本当に削除しますか?"} %>
“`

大切な箇所はこの data: {confirm: “本当に削除しますか?”} の部分です。
これをつけるだけで削除するときに確認のアラートが表示されるようになります。(タブだらけなのは気にしないでください笑)

![スクリーンショット 2020-12-05 17.39.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927542/a9157357-0d95-65da-715d-85ca6670b3c9.png)
簡単に実装でき、ユーザーが使う

元記事を表示

WindowsでRubyで作ったGUIのEXEを配布するときにlibuiを使う場合のメモ

メモ書き的な内容ですみません。機会があったら拡充します。この情報だけだと単なるヒントという感じなので、わからない部分は都度ググってください(書いた人も、試したら出来たから記事にして忘れないようにメモするという状態です)

## はじめに

 Rubyでプログラミングを覚えた後、GUIでWindows向けのツールを作成して、配布してみたいと思う方は結構いると思います。でも実際にはパーフェクトな方法がないのが現状です。

### ocra

 まず、RubyのインストールされていないWindows環境でRubyを動かすとなったときに、Ocraというツールを使うことが多いと思います。

* https://github.com/larsch/ocra/

ocraはRuby処理系全体を圧縮してEXEファイルに詰めてしまい、Rubyを実行する際にはRuby処理系を解凍してそれを実行すると聞いています。(詳しいことはわかりません)Ruby処理系と一緒にGUIツールもocraでEXEの中に詰め込む必要があります。

 では、どのGUIツールキットを同封するか、という話になります。以前ならTkをお

元記事を表示

【Rails】Concernでコントローラーの重複した記述をまとめる

# Concernとは
結論から言いますと、コントローラーの重複した記述を防ぐための、拡張機能です。
アプリ作成が続くと、コントローラーの記述が増え、重複した記述になりがちです。
そこでConcernを利用してまとめていきましょう。

# やり方
### 1. `controller/concerns`ディレクトリにファイルを作る。今回は`common_actions.rb`と名前をつけます。
### 2. controllerで重複した記述を見つける
“`ruby:controller/post_as_controller.rb
#省略
def update
if @post.update(post_params)
redirect_to user_url(current_user)
else
render :edit
end
end
#省略
“`
“`ruby:controller/post_bs_controller.rb
#省略
def update
if @post.update(post

元記事を表示

Rubyでのファイル形式の変換まとめ(TSV, CSV, JSON)

###ファイル形式の種類
データには様々な形式がありますが、入力のファイル形式と違うファイル形式で出力したいことがあると思います。今回は、以下の3つのファイル形式を扱い、Ruby上で変換する方法をまとめました。

①TSV (Tab Separated Values)・・・各項目の間がタブで区切られたテキストデータ。拡張子はtxtかtsv。

“`people.tsv
alice f 20
bob m 19
conner m 34
david m 23
elena f 24
“`
②CSV (Comma Separated Values)・・・各項目の間がカンマ(,)で区切られたテキストデータ。拡張子はtxtかcsv。

“`people.csv
“alice”,”f”,20
“bob”,”m”,19
“conner”,”m”,34
“david”,”m”,23
“elena”,”f”,24
“`

③JSON (JavaScript Object Notation)・・・ Javascriptで組み込まれているオブジェクトというデータ記述をベースとしたデ

元記事を表示

Railsでsvg画像つこてみた

# はじめに
皆さんこんにちは、駆け出しエンジニアのプージニアです!
先週初投稿を果たし、本記事2本目でございます!

本記事はRailsでsvg画像を読み込んでつこてみた記事になります?

###対象の読者

・svgをRailsで使ってみたい!

###参考

ヘルパーメソッド参考
https://coderwall.com/p/d1vplg/embedding-and-styling-inline-svg-documents-with-css-in-rails

##Applicationヘルパーを作成する

“`ruby:application_helper.rb
# viewでsvg形式のファイルを読み込む
def embedded_svg filename, options={}
file = File.read(Rails.root.join(‘app’, ‘assets’, ‘images’, filename))
doc = Nokogiri::HTML::DocumentFragment.parse file
svg = doc.at_

元記事を表示

accepts_nested_attributes_for メソッドを攻略する!

最初は何が何だか分からなかった”accepts_nested_attributes_for”なるメソッドですが、使っているうちに便利さを実感するようになりました。

[Active Recordはaccepts_nested_attributes_forメソッドの解説 (Railsガイド)](https://railsguides.jp/form_helpers.html#%E8%A4%87%E9%9B%91%E3%81%AA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)
[Active Recordはaccepts_nested_attributes_forメソッドの解説 (Ruby on Rails英語リファレンス)](
https://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html)

要するに親モデルを保存するときに、Associationで関連づけた子モデル

元記事を表示

Rails ユーザー編集機能の実装

#はじめに
ユーザー管理機能(ログイン/ログアウト)を実装したあとに、ユーザー編集機能を実装しました。バリデーションで少してこずったので、書き記します。

**開発環境**
ruby 2.6.6
rails 6.0.0

#目次
1.ルーティング
2.コントローラー
3.モデル

#1.ルーティング
編集機能実装にあたり、「edit」及び「update」アクションをルーティングとして追加する。

“`ruby:config/routes.rb
resources :users, only: [:edit, :update]
“`
#2.コントローラー
ターミナルでuserコントローラーを作成する。想定として、一度ユーザーの「nickname」、「email」、「パスワード」を新規登録しており、後から「nickname」と「email」を編集できるようにする。

“`bash:ターミナル
rails g controller users
“`

作成したコントローラーに下記記述を追記する。deviseはインストール済みなので、「current_user」メソッドが使用できる。us

元記事を表示

[Ruby on Rails]orderメソッド〜レコードの所得順の変更方法〜

今回の記事では、テーブル(データを格納しておく場所)のレコード(個別の情報)を所得する際の順番を入れ替える方法を説明します。

○orderメソッド

モデルが使用することができるActiveRecordメソッドの一つ。
テーブル(データベース)から所得した複数のレコード情報を持つインスタンス(変数)を並び替えることができるメソッド。

引数に
並び替えの基準となるカラム名と並び順を以下のように指定することで使用ができる。

インスタンス = モデル名.order(“並び替えの基準となるカラム名 並び順”)

並び順は
DESC:Descending(降順)①旧→新、②小さいものから大きいものへ
ASC:Ascending(昇順)①新→旧、②大きいものから小さいものへ

元記事を表示

OTHERカテゴリの最新記事