Rails関連のことを調べてみた2020年05月14日

Rails関連のことを調べてみた2020年05月14日

Railsでgoogleapisを使い、gmailでメール送信

# 事前準備

https://developers.google.com/gmail/api/quickstart/ruby
とりあえずこの通りにして、ラベルが表示されるまでやってみる

# スコープの変更
サンプルコードだとreadonlyだけなので、メール送信出来るように[スコープを変える][1]

“`rb
SCOPE = Google::Apis::GmailV1::AUTH_GMAIL_READONLY
“`

“`rb
SCOPE = [
Google::Apis::GmailV1::AUTH_GMAIL_READONLY,
Google::Apis::GmailV1::AUTH_GMAIL_SEND
]
“`

\* ただメールを送るだけなら`AUTH_GMAIL_READONLY`は要らないが、後に説明するプロファイルの参照時に[必要][2]

既に出来上がっているtoken.ymlはスコープが最初のままなので、このファイルを消す

# メールの作成

メールは素のテキストで書くか、何らかのライブラリを使って組み立てるかする。
APIとしては[Bas

元記事を表示

Chartkickで入力していない日付の表示をしたくない

#今回実装したいこと
Chartkickで入力していない日付の表示をしたくない。
以下のように入力していない日付のX軸の表示を消したい。

![スクリーンショット 2020-05-14 10.53.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626160/5926dc44-2d39-6da4-6716-e93e7803344e.png)

#結論

discrete: trueを追加する。

↓変更前

“`ruby
<%= line_chart @data, xtitle: "Day", ytitle: "Number", curve: false %>
“`

↓変更後

“`ruby
<%= line_chart @data, xtitle: "Day", ytitle: "Number", curve: false %>
“`

↓解決

![スクリーンショット 2020-05-14 10.58.32.png](https://qiita-image-store.s3.ap-n

元記事を表示

【brew】bundle installでmysql2エラーが出てしまった時の解決策

homebrewを使ってrailsをAPIモードで使用する、 bundle install で以下のエラーが出てしまいました。

“`console.
user-no-MacBook-Pro:app user$ bundle install
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v ‘0.5.3’ –source ‘https://rubygems.org/’` succeeds before bundling.
“`

## 解決策
そういえば、**brewでmysqlを使うのが初めてだった**ので、まずbrewでmysqlをインストールが必要でした。

“`console.
user-no-MacBook-Pro:app user$ brew install mysql

To have launchd start mysql now and restart at login:

元記事を表示

daw

dwa

元記事を表示

[Rails]ネストしたコメントの削除機能の作成

##コメントの削除機能の作成
Railsで投稿サイトのコメント削除機能を作成した際に、ネストのルーティング関連で少し詰まってしまったのでログを残しておきます。

##作りたいもの
本の内容を投稿(book)して、その投稿1つ1つに対してコメント(book_comment)できる。
そのコメントを消すことができるようにする。

“`routes.rb
Rails.application.routes.draw do
devise_for :users
resources :users,only: [:show,:index,:edit,:update]
resources :books do
resources :book_comments, only: [:create, :destroy]
end

root ‘home#top’
get ‘home/about’
end
“`

##destroyアクションにlink_toする書き方について
ここで、viewファイルのlink_toの書き方が分からず、詰まってしまいました。

“`comment

元記事を表示

【DBエラー解決】Error: Duplicate column name ””

#はじめに
$ rails db:migrate した際にDBには反映されているがエラーが起こっている解決策について調べたのでまとめました。

#今回の状況

$ rails db:migrate
⬇︎
エラー発生
⬇︎
エラーなのにDBにはカラムが反映されている

#エラー内容

“`
andardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name ” ・・・・・




“`

これはカラムが重複していますと言うエラーだそうです。

#解決策

command + f でmigrationファイルの中身を空にする。

“`
class AddCategoryToItems < ActiveRecord::Migration[5.2] def change ここを空にする end end ``` 空の状態で $ rails db:migrate すると通る。 command + f で切り取ったコ

元記事を表示

【開発ログ⑩】Railsで法定付与日と勤続年数を計算したよ

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回の実施内容
前回までで、社員登録の実装が完了しました。社員登録時に「入社日(カラム名は、hire_date)」を入力してもらいます。そこで、この入社日を使用して、法定付与日と勤続年数を計算させます。具体的には以下の手順で進めます。今回は書くこと少なめ。

– 法定付与日の計算方法を確認
– 法定付与日の実装
– 勤続年数の計算方法を確認
– 勤続年数の実装

# 法定付与日の「とは?」と「計算方法

元記事を表示

【Rails】 5分でExcel出力を実装する方法

# はじめに
社内アプリケーションを作成したときに管理部へ提出するようの資料をExcel出力するとき調べたことをまとめました。
Axlsx というライブラリを使用すると、Rails で簡単にExcel出力ができるようになります。
利点なのかわかりませんが、複数のシートを作成することができて便利だなーと感じました。

# コマンド

“`
// Rails アプリケーション作成
$ rails _5.2.4.2_ new five_min_axlsx_rails
$ cd five_min_axlsx_rails

// scaffold で Excel モデルを作成
$ rails g scaffold excel title:string body:string
$ rails db:migrate RAILS_ENV=

元記事を表示

sinatraとrailsで比較!ページが表示されるまでの流れ

![sinatraとrailsを比較! (1)-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269844/f338c7cd-5221-ef99-1a8f-597ad4dc555d.jpeg)

railsとsinatraの表示までの流れを比較してみました。

この記事は、sinatraとrailsでテストアプリを作った時に、「こんな図があればもっと分かりやすかったなー」をまとめてみました。

## sinatraの流れ
1、アクセスがある。
2、処理が実行される。
3、htmlが表示される。

スライドにしてみました。
![sinatraとrailsを比較! (1)-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269844/539284aa-da7e-4623-8288-fc07fbf0230e.jpeg)

## ruby on railsの流れ
1、アクセスがある
2、アクセス先のルーティングか

元記事を表示

マイグレーションファイルを修正する

【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code

#DB反映後のマイグレーションファイルを修正する
マイグレーションファイルをrails db:migrateでDBに反映した後に、「カラム名間違えた、、、」などミスに気づくことがあるかと思います。
ミスを訂正してまた反映させればいいんじゃね?と思うのですが、そうもいきません。
反映ずみのマイグレーションファイルは修正できません。修正してしまうと、DBとの整合性が取れなくなり、エラーなどの原因になります。
しかし、順を追えば修正可能ですので、その方法を書いていきます。

##マイグレーションファイルをDBから戻す
ではどうすればいいかと言いますと、まず、DBに反映させているマイグレーションファイル一度DBから差し戻します。

マイグレーションファイルの状態を見てみます。

“`
$ rails db:migrate:status
“`

このコマンドで、マイグレーションファイルの状態がわかります。
statusがupだとDB

元記事を表示

新しく作成した.jsファイルが読み込まれない

#新しく作成した.jsファイルが読み込まれない
jQueryで追加機能を新しいファイルに書き込み実装したところ、うまく起動しなかった。
つまり読み込まれていないという状況であった。
その時の解決方法を備忘録的に記入する。

##状況
![スクリーンショット 2020-05-13 23.33.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590181/206c12a6-a80c-c6e6-39b7-cdbcafe2dc14.png)

新たに「searches.js」を加えたがうまく実装しない。

##結論
![スクリーンショット 2020-05-13 23.35.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590181/6f8e4d5c-4d35-36ee-2c7f-985d69eed22c.png)
「application.js」に
`//= require_tree .`
を追記するだけ

##軽く説

元記事を表示

aタグ href属性で、link_toと同じようにmethod指定する方法

####結論
・aタグhref属性を使う際にも、
 例えば”data-method” => “delete”と記述することでmethod(Verb)を指定でき、
 link_toのように柔軟なリンク設定ができます。
・また、”data-confirm” => “この投稿を削除してよろしいですか?”というように、
 アラート設定することもできます。
・2行目の:titleで設定したテキストは、アイコンにマウスオンすると表示されます。

“`
%a.btn.btn-danger{“aria-label” => “Delete”, :href => “/posts/#{@post.id}”, “data-method” => “delete”, “data-confirm” => “この投稿を削除してよろしいですか?”}
 %i.far.fa-trash-alt{“aria-hidden” => “true”, :title => “この投稿を削除しますか?”}
 %h.about_delete_button 削除する
“`
仕上がりはこんな感じになります。

[![Image from

元記事を表示

Day12 Rails コメント機能の実装

#####1. コメントモデルの作成
ⅰ. コメントモデル作成

“`terminal
$ rails g model comment
“`
ⅱ. commentsテーブルにカラム作成

“`rb:db/migrate/20XXXXXXXXXXXX_create_comments.rb
create_table :comments do |t|
t.integer :user_id #user_idカラム作成
t.integer :tweet_id  #tweet_idカラム作成
t.text :text #コメント本文textカラム作成
t.timestamps
end
“`

“`terminal
$ rails db:migrate #マイグレーションファイルを実行
“`

ⅲ. テーブル間のアソシエーションを定義

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630397/e697ee61-57f5-84ad-06a1-

元記事を表示

ローカルサーバーがすでに起動していると言われてrails sできない時の対処

# 背景
何らかの理由でローカルサーバーが落ちてしまったが、内部的には起動中となっているときに再度rails sできなかった事があったのでそれを解決した時の方法

# 対処法
* localhostのタスクを確認
*
“`
sudo lsof -P -i:3000
“`

* 実行中のタスクidをkill

“`
sudo kill -9 “`

元記事を表示

【Rails Error】No such table userと言われた

# 【Rails Error】No such table userと言われた
あるとき、Deviseを導入した時に、こんなエラーが出た

“`:terminal
> rails db:migrate
== 20190905110927 AddDeviseToUsers: migrating =================================
— change_table(:users)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: no such table: users:
“`
Userテーブルがないとお!
とはいえrails g devise userをしてもrails g model userをしても反応しないじゃないか!

無いからダメって言われて、じゃあ作ろうとしたら怒るってどんなツンデレよ..

あれこれ調べていると、

“`:2019*********_add_d

元記事を表示

【Rails】 .where について

# はじめに

.whereについて調べたことについて自分なりにまとめておきます。

# .where

“`
Post.where(title: “food”)
“`

titleがfoodのレコードを全て取得する

#.where.not

**NOT条件**

“`
Post.where.not(title: “food”)
“`

titleがfood以外のレコードを全て取得する

#.where.and

**AND条件**

“`
Post.where(title: “food”, price: 1000)
“`

titleがfood、なおかつpriceが1000のレコードを全て取得する

#.where.or

**OR条件**

“`
Post.where(title: “food”).or(where(price: 1000)
“`

titleがfood、またはpriceが1000のレコードを全て取得する

#AND条件OR条件

“`
Post.where(title: “food”, price: 1000).or(Post.where(

元記事を表示

Herokuを用いたRailsアプリのデプロイ

## Herokuのアカウントを作る
まずは以下のページからHerokuのアカウントを作りましょう。
https://signup.heroku.com/login
すると、登録したメールアドレス宛にHerokuから認証用のメールが送信されるので、リンクをクリックしてリンク先でパスワードの設定を行います。
![スクリーンショット 2020-05-13 20.24.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/eb05f9d2-7e84-95b8-99ab-3fc1b24ec5af.png)
これで登録は完了です。

## アプリの設定を変更する
アプリ側の設定をHerokuに合わせて変更します。

・Gemの追加
HerokuではPostgreSQLというデータベースを使うため、pgというgemをインストールする必要があります。
本番環境だけにインストールできればいいので、group :production do ~ endの間に記載します。

“`
group :producti

元記事を表示

Webpackerを使用したRailsアプリケーションのHerokuデプロイが失敗する

今月初めにデプロイしたときは大丈夫だったのに。

“`
remote: [1/4] Resolving packages…
remote: [2/4] Fetching packages…
remote: info fsevents@1.2.9: The platform “linux” is incompatible with this module.
remote: info “fsevents@1.2.9″ is an optional dependency and failed compatibility check. Excluding it from installation.
remote: [3/4] Linking dependencies…
remote: warning ” > webpack-dev-server@3.5.1″ has unmet peer dependency “webpack@^4.0.0”.
remote: warning “we

元記事を表示

rails devise導入からflash設定まで 備忘録

?deviseを使ったユーザー機能実装
devise userでモデルを作成する
#
“`
rails g devise user
“`

マイグレーションファイルを編集する
#
“`
class DeviseCreateUsers < ActiveRecord::Migration[5.0] def change create_table :users do |t| ## Database authenticatable t.string :name, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" end add_index :users, :name, unique: true ``` rails db:migrateする。 モデルにバリデーションを追加する # ``` cl

元記事を表示

herokuにデプロイする際に嵌ったのでその備忘録(can’t find the ‘libpq-fe.h header、バイナリファイルを実行できません:実行形式エラー、remote: ! Do not authenticate with username and password using git.)

##環境・事前状況
・Windows10home on VirtualBox Ubuntu
・rails6
・railsアプリ作成済み。
・gitコマンド使用可能。
・herokuアカウント作成済み。
・heroku CLI インストール未了(herokuコマンドが使えるようになるやつ)

##herokuにデプロイするまでのまとめ
 まずherokuコマンドを使えるようにする。

 herokuのdbはPostgresQLなのでGemfileにその記述などをしてからデプロイする。
 
 Gitでcommitしてからherokuにデプロイする流れになる。

 herokuコマンドだけでデプロイできなければ、sudoを付けてからしてみる。

 公式情報が分かりやすい。

 Rails 6.xでHerokuを使い始める
 https://devcenter.heroku.com/articles/getting-started-with-rails6

 Heroku CLI
 https://devcenter.heroku.com/articles/heroku-cli

##備忘録

元記事を表示

OTHERカテゴリの最新記事