- 1. Railsでgoogleapisを使い、gmailでメール送信
- 2. Chartkickで入力していない日付の表示をしたくない
- 3. 【brew】bundle installでmysql2エラーが出てしまった時の解決策
- 4. daw
- 5. [Rails]ネストしたコメントの削除機能の作成
- 6. 【DBエラー解決】Error: Duplicate column name ””
- 7. 【開発ログ⑩】Railsで法定付与日と勤続年数を計算したよ
- 8. 【Rails】 5分でExcel出力を実装する方法
- 9. sinatraとrailsで比較!ページが表示されるまでの流れ
- 10. マイグレーションファイルを修正する
- 11. 新しく作成した.jsファイルが読み込まれない
- 12. aタグ href属性で、link_toと同じようにmethod指定する方法
- 13. Day12 Rails コメント機能の実装
- 14. ローカルサーバーがすでに起動していると言われてrails sできない時の対処
- 15. 【Rails Error】No such table userと言われた
- 16. 【Rails】 .where について
- 17. Herokuを用いたRailsアプリのデプロイ
- 18. Webpackerを使用したRailsアプリケーションのHerokuデプロイが失敗する
- 19. rails devise導入からflash設定まで 備忘録
- 20. herokuにデプロイする際に嵌ったのでその備忘録(can’t find the ‘libpq-fe.h header、バイナリファイルを実行できません:実行形式エラー、remote: ! Do not authenticate with username and password using git.)
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]
endroot ‘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-rails6Heroku CLI
https://devcenter.heroku.com/articles/heroku-cli##備忘録