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

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

Herokuを使ったデプロイ手順

#はじめに
プログラミング初心者のメモ。
Herokuでデプロイしてみた覚書。

#手順 ーはじめてデプロイをする場合

1. Herokuにアカウント登録する
2. Heroku CLIをインストールする
3. 必要なGemを導入する
4. masterブランチへcommitする
5. Heroku上にアプリケーションを作成する
6. MySQLを使用できるように設定する
7. master.keyを環境変数として設定する
8. Herokuへアプリケーションの情報をpushする
9. Heroku上でマイグレーションを実行する

#手順 ーデプロイ済みのアプリケーションに変更修正を加えた場合

1. 変更修正をcommitする
2. ブランチを作成していた場合は、masterブランチへマージする
3. Heroku上にpushする
4. (テーブルに変更を加えた場合は)Heroku上でマイグレーションを実行する

#Basic認証を導入する
1. アプリケーションコントローラーのprivateメソッドに以下のように記述

“`ruby.application_controller

元記事を表示

【Rails】部分テンプレート(render)で別のコントローラーのビューを呼び出す方法

#はじめに
違うファイルのビューを他のファイルのビューに表示さる際、部分的にそのビューをrenderで呼びだすことができます。
そんな、部分テンプレートの方法について紹介します。

###目次
1. 部分テンプレートファイルの名前について
2. renderで呼び出す
3. コントローラーへの定義

#開発環境
ruby 2.6.5
rails 6.0.0

#実装
それでは実装していきます〜

#1. 部分テンプレートファイルの名前について

まず、部分テンプレートとしてビューファイルを作成する時は`_index.html.erb`のようにファイル名の前に`_`(アンダースコア)をつけます。

![スクリーンショット 2020-11-23 5.40.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/c622d7d1-df74-6c5b-791b-23f5057e0ce3.png)

今回はproductsコントローラーのビューを部分テンプレートとして使いたいので、`products

元記事を表示

Cloud9でRuby on Railsの環境構築 ~インストールから起動まで~

#はじめに#
備忘録としてタイトル通り、Cloud9を使用したRuby on Railsの環境構築の手順を記載します。

独学でPHP・Laravelを学習しており、現在就活中なのでプロのエンジニアではありません。
転職希望の企業がRubyとRailsを使用した開発をメインとしているので、改めて学習が必要となりアウトプットも兼ねてカキコします。

Cloud9を選択した理由は以下の通りです。

– 使用PCがwindows10のため、ローカルに入れるよりもLinux環境の方がエラーの際情報が多い
– ポートフォリオのインフラにAWSを使っている為アカウントを持っていた
– 基本無料で使用できる

なおこの記事は環境設定のハウツー的な構成ではなく、私が行った手順とエラーを時系列そのままで記載します。
「環境設定の方法を知りてえんだ!」って方はプロの記事を参考にしてください。

#目標#
AWSのCloud9にRuby on Railsをインストールし、アプリケーションを起動して「Yay! You’re on Rails!」を表示させる

#環境#
Amazon linux
ruby 2.

元記事を表示

[Rails]ユーザー新規登録時にメールを自動配信する機能を実装する[備忘録]

#はじめに
先日、Ruby on Railsでアプリケーションを作成しました。
その中で、ユーザーに新規登録をしてもらうと同時に、ユーザーのメールアドレス宛にメールを送る機能を作りました。
ネットで調べつつ、試行錯誤しながら実装したのですが、色々な情報が入り乱れていて、少しだけ分かりにくかった印象があったので、備忘録も兼ねて、ここでまとめたいと思います。
それでは参りましょう!

#メール送信機能を記述

““ruby:config/environment/development.rb
#以下を追記
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => ‘localhost:3000’}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => ‘smtp.gmail.com’,
:port

元記事を表示

Mysql2::Error: Table ‘○○_production.users’ doesn’t existを解消した話

表題が発生し、解消するまでの顛末をまとめました。原因は2つありました。

# 開発環境
ruby 2.6.5
Rails 6.0.3.2
capistrano 3.14.1
AWS EC2
webサーバーNginx
アプリケーションサーバーUnicorn

# 事の発端
データベース関連の修正を行ったため、本番環境(EC2)で一度テーブルを落としてから再作成しました。
そしてマイグレーションを行った際、表題のエラーが発生しました。結論、原因は2つありました。

# 原因その1 userを参照するreferencesメソッドが、userテーブルが作成される前に読み込まれていた
こちらの方がわかりやすくまとめられてます。

rails db:migrate:statusで確認すると、確かにテーブルのステータスがdownになっていました。
タイトルの通り、エラーメッセージの指摘は何ら矛盾がありませんでしたね。
ただ、開発環境ではエラーにはならず?アプリも正常に動いていたので、気づくのに

元記事を表示

【Public】マルチスケールシミュレーション特論公開記事リスト

# はじめに

マルチスケールシミュレーション特論の講義メモです.授業内で `学習メモがpublicになっていて,LGTMをもらえている` という指示があったので,拙い内容ですが投稿しています.

# 公開記事リスト

1. [【Week 5】bash, ruby\_first]()

2. [【Week 6】my\_help, ruby\_second]()

3. [【Week 7】gem, ruby\_third]()

4. [【Week 8】rake, ruby\_fourth]()

5. [【Week 9】rubular, ruby\_fifth]()

6. 【Week 10】Coming soon…

7. 【Week 11】Coming soon…

8. 【Week 12】Comin

元記事を表示

Rails 6.0~ DEPRECATION WARNINGが出力されないようにした。

rails6.0~から定数の読み込みにzeitwerkモードというものが使われるようになりました。
https://railsguides.jp/autoloading_and_reloading_constants.html
それに起因して、サーバーを起動した際に以下のようなwarningがログに出力されるようになりました。
このwarning邪魔なので消したいなあと思っていたところ、無事解決することができたので、同じことで困っている方たちのお役に立てれば良いなと思い、雑記します。

“`ruby
DEPRECATION WARNING: Initialization autoloaded the constants MyClass.
“`
結論から述べると、このwarningが出る原因は、initializersディレクトリ内で自分で定義した定数(MyClass)を読み込んでいたことでした。
initializersディレクトリ内での定数の読み込みはリロード時には行われない。そして、自分で定義した定数はリロード時に変更を反映できる方が開発の便宜上良いので、initializer

元記事を表示

マルチスケールシミュレーション特論: google recruit

\![ruby-2.5.5p157]()

# はじめに

今回はマルチスケールシミュレーション特論という大学院の授業で ruby を使った課題があったのでプログラムを作成してみた

– **課題**{e(自然対数の底)の値で連続する 10 桁の数のうち,最初の素数}を求めよ

# 手法

e は以下のように定義されている

“`
e = 2.71828182845904523536028747135266249775
7247093699959574966967627724076630353547
5945713821785251664274274663919320030599
2181741359662904357290033429526059563073
81323286279434907632338298807531952510190
“`

以下のような **手順** で今回は進めていこうと思う

## 手順

元記事を表示

ひな祭り[Ruby]

#ひな祭り[Ruby]問題
#問題
ひな祭りの準備をしましょう。あなたが持っている 10 体の人形を “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J” で表します。ひな壇の各段 (計 3 段) に並べる人形の数が与えられるので、各段にならべる人形の記号を改行区切りで出力してください。人形は必ずもとの A, B, C, … の順番で並べます。

例)

各段にならべる人形の数: 2, 3, 5

→ 人形の並べ方:

AB
CDE
FGHIJ
#入力される値
入力は以下のフォーマットで与えられます。

h_1 h_2 h_3
ひな壇の 1 段目、2 段目、3 段目に並べる人形の数を表す整数 h_1, h_2, h_3 がこの順に半角スペース区切りで与えられます。入力は 1 行となり、末尾に改行が 1 つ入ります。
#期待する出力
ひな壇への人形の並べ方を以下の形式で出力してください。

s_1
s_2
s_3
ひな壇の 1 段目、2 段目、3 段目に並べる人形を表す文字列 s_1, s_2, s_3 をこの順に改行区切りで出力してくださ

元記事を表示

Active Storage の導入まとめ

###はじめに

・Active Strage の導入を自分なりにまとめたもので、メモのようなものです。
・投稿者は初学者ですので誤った情報を投稿してしまうことがあります。その時はぜひ、遠慮会釈なしにご指摘いただけると幸いです。

###Active Strageとは
ファイルアップロード機能を手軽に実装できるGemのこと。
元々はインストールが必要だったが、Rails5.2.0以降、初期段階から統合される事となった。このGemを用いると、ファイルアップロードのメソッドを使用できたり、画像を保存するテーブルを簡単に作成できる。

###Active Strageのお供
Active Strageと一緒に導入すると画像の加工の幅が広がる物を3つ列挙します。

・ImageMagick
・MiniMagick
・ImageProcessing

ImageMagickはソフトウェアで、MiniMagickとImageProcessingはGemになります。

`ImageMagick`
コマンドラインから画像に処理を加えることができるツールのこと。
画像の作成やサイズ変更、保存形式の変更な

元記事を表示

【Week 6】my_help, ruby_second

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ](https://qiita.com/e79a93e5b7b1/items/5df2d09065c09d13db19).

授業内で `学習メモがpublicになっていて,LGTMをもらえている` という指示があったので,拙い内容ですが投稿しています.

# チャート式 Ruby

参照記事は[コチラ]()

## variable

前回の講義ではコマンドライン引数として受け取った文字を ARGV[0] を用いて出力するプログラム hello\_name.rb を作成した.

`(参考) hello_name.rb`

“`ruby
puts “Hello #{ARGV[0]}.”
“`

今回は受け取った引数 ARGV[0] を name という変数 (variable) に代入し,出力するプログラムを作成する.

まずは変数 name を用意する必要がある.

元記事を表示

【Week 6】my_help, ruby_second

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ]().

# チャート式 Ruby

参照記事は[コチラ]()

## variable

前回の講義ではコマンドライン引数として受け取った文字を ARGV[0] を用いて出力するプログラム hello\_name.rb を作成した.

`(参考) hello_name.rb`

“`ruby
puts “Hello #{ARGV[0]}.”
“`

今回は受け取った引数 ARGV[0] を name という変数 (variable) に代入し,出力するプログラムを作成する.

まずは変数 name を用意する必要がある.Ruby では変数の型宣言の必要がない(Python も然り)ため,変数は以下のように定義できる.

“`ruby
na

元記事を表示

[Rails]オーバーライド(継承)について勉強してみた![初心者]

#オーバーライドとは?
親クラス(スーパークラス)で定義されたメソッドについて、小クラス(サブクラス)で同じ名前で再定義すること。

#クラスの継承とは?
他のクラスをベースとして新しいクラスを作成することをクラスの継承と言います。

利用したいクラスが複数存在する場合、全てを1から作成していると骨が折れますし、共通する部分を複数のクラスに重複して定義する必要があります。
そこで、あるクラスが既に作成されている場合、そのクラスを拡張することで、新しいクラスを作成することができます。

クラスの継承は以下のように記載します。

““ruby:
class 子クラス名 < 親クラス名 end ```` #継承の具体例 ````ruby: class Days def study puts "勉強する" end end class Holiday < Days def sleep puts "寝過ごす" end end holiday = Holiday.new holiday.study ```` ````ruby:実行結果 勉強する ````

元記事を表示

【Rails】いいね機能をjQueryで実装

## はじめに
一覧ページでのいいね機能を実装しようとしましたが、一番上の星をいいねしたら全てのチームにいいねがついてしまうという問題が発生しました。この問題が起きたことで大変学習になったので、思考の整理とアウトプットとして記事にまとめさせていただきました。また、いいね機能は多くのアプリで実装することが多いと思います。同じような問題が起きている方や別の実装方法など、ご意見いただけたら幸いです!

## 概要
まず大前提にテーブルは、`users`, `teams`, `likes`の3つで`likes`は
`users`と`teams`の中間テーブルになっています。
AjaxでHTTPメソッドの`GET`, `POST`, `DELETE`ができるように実装していきます。

## 起きている問題・解決したいこと(仮説)

起きている問題と解決したいことを簡単に書いていきたいと思います。

#### 起きている問題
– 全ての記事にいいねがついてしまう。
– 全てのチームのidを取得していたつもりが一番上のチームのidしか取得できていない。(デベロッパーツールで確認)

#### 解決し

元記事を表示

【Week 5】bash, ruby_first

# はじめに

マルチスケールシミュレーション特論の講義メモです.講義メモのインデックスは[コチラ](https://qiita.com/e79a93e5b7b1/items/5df2d09065c09d13db19).

授業内で `学習メモがpublicになっていて,LGTMをもらえている` という指示があったので,拙い内容ですが投稿しています.

# 概要

今回から Ruby の講義に入っていく.講義のメモは各回

– チャート式 Ruby
– Ruby 開発周辺情報

の2点を軸としてまとめる.

## チャート式 Ruby 一覧

チャート式 Rubyで扱う内容は以下を予定している.

1. puts (出力)
2. variable and method (変数とメソッド)
3. if-else, case, array and each (条件分岐と配列まわり)
4. gem (ライブラリの使い方)
5. recursion (再帰)
6. class
7. 仕上げ問題

## Ruby 開発周辺情報 一覧

Ruby 開発周辺情報で扱う内

元記事を表示

Roman Numerals

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

# Roman Numerals

## 講義ページリンク

[roman numerals](https://qiita.com/daddygongon/items/2d0a73a51ddab2d9da1b)

## 課題

アラビア数字を受け取って,それに対応した[ローマ数字](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E6%95%B0%E5%AD%97)を返すプログラムの作成ついでに整数(Integer)クラスを拡張する

## アラビア数字からローマ数字への変換方法

– 各桁を表すのに使用する文字は,1,5,次の桁の1(10)を表す3つ
– 例えば1桁目では(I(1),

元記事を表示

Roman Numerals

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

# Roman Numerals

## 講義ページリンク

[roman numerals](https://qiita.com/daddygongon/items/2d0a73a51ddab2d9da1b)

## 課題

アラビア数字を受け取って,それに対応した[ローマ数字](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E6%95%B0%E5%AD%97)を返すプログラムの作成ついでに整数(Integer)クラスを拡張する

## アラビア数字からローマ数字への変換方法

– 各桁を表すのに使用する文字は,1,5,次の桁の1(10)を表す3つ
– 例えば1桁目では(I(1),

元記事を表示

Roman Numerals

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

# Roman Numerals

## 講義ページリンク

[roman numerals](https://qiita.com/daddygongon/items/2d0a73a51ddab2d9da1b)

## 課題

アラビア数字を受け取って,それに対応した[ローマ数字](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E6%95%B0%E5%AD%97)を返すプログラムの作成ついでに整数(Integer)クラスを拡張する

## アラビア数字からローマ数字への変換方法

– 各桁を表すのに使用する文字は,1,5,次の桁の1(10)を表す3つ
– 例えば1桁目では(I(1),

元記事を表示

ActiveRecordでは present? の代わりに exists? を使おう

小ネタです。

# 条件に該当するレコードが存在するかを確認したい
ActiveRecordで条件に存在するレコードが存在するかを確認するのに、つい、

“`ruby
Model.where(conditions).present?
“`

と書いてしまいがちですが、これはパフォーマンス上の問題が生じる可能性があります。

`.present?` は ActiveSupport によってモンキーパッチされたメソッドです。
`Mode.where(conditions)` のような `ActiveRecord_Relation` クラスのオブジェクトに `.present?` を適用するとどうなるか?

すると条件に該当するレコードを**全てDBから取得して**、(Rails上のモデルの)配列として評価することになります。
配列に要素が存在すれば `true`、 しなければ `false` ですね。

## なぜこれはダメなのか
一見すると問題なさそうですし、実際結果自体は正しいのですが、条件に該当するレコードが1つでも存在することを確認できれば良いわけで、全件を取得する必要はありま

元記事を表示

TableExportで好きな位置にExcelやCSV出力ボタンを配置する

# はじめに
JQueryプラグイン「TableExport」ではテーブルを簡単にExcel、CSV、テキストファイルなどで出力できます。ただ、出力ボタンの位置は上下で固定っぽくて不便だったので、改善策を備忘録として残しておきます。

TableExport自体の使い方は[こちらのサイト](https://www.wp-benricho.com/tableexport/)が分かりやすいので参考にされてください。

開発環境は以下の通り

* Ruby 2.6.3
* Rails 5.2.4.4
* jQuery 1.12.4

(Ruby on Rails使用してますが、今回の記事ではjQueryのみ取り上げているのであまり関係ないかと思います)

なお、bootstrapを使えばデフォルトでオシャレなボタンにできますが今回は使いません。

# 問題点

  • OTHERカテゴリの最新記事