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

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

【Rails】gem’RSpotify’を利用し、SpotifyAPIからアーティスト情報を取得する検索機能を作成する

#概要
Railsアプリケーションにて、SpotifyAPIを利用し、検索機能を実装します。
SpotifyAPIのラッパーであるRSpotifyというgemを利用する方法になります。

#SpotifyAPIへアプリの登録

SpotifyAPIを利用するにはアカウントを作成し、デベロッパー用のダッシュボードで連携するアプリを登録する必要があります。
アプリを登録すればAPIへアクセスするためのIDが取得できます。

ユーザーアカウントの登録を行う。
https://www.spotify.com/jp/

アカウント作成完了後にデベロッパー用のダッシュボードへ。
https://developer.spotify.com/

“CREATE AN APP”をクリック。
アプリケーション名とアプリケーションの説明を英語で記載し、
アプリの種類は何かをチェックしてください。
商用かどうかが確認されますので、いずれかを選択。
今回はNoを選択しました。

作成完了すれば、
“CLIENT ID”と”CLIENT SECRET ID”が発行されます。
“CLIENT SECRET ID

元記事を表示

rails チュートリアル2週目~ヘルスケアwebサービスを自分で作る医者の日記~

railsチュートリ
の3章初めからてこずった

最初sqlite3 をsqlite とgemfileに書いて
失敗
その後 書き直して add commit heroku にpushするも

デプロイできず

“`
heroku run rails
“`
するも

“`
Specified ‘sqlite3’ for database adapter, but the gem is not loaded. Add `gem ‘sqlite3’` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). (Gem::LoadError) heroku
“`
となる。
herokuはsqlite3いらないんじゃなかったの?
bundle install –without production でsqlite3はのぞいているのに

“`
remote: ###### WARNING:
remote:
remote: Detecting rails

元記事を表示

RailsでmySQLを使ってgem:deviseを実装する

こんにちは

Railsでポートフォリオを作るときに、mySQLを使ってさらにdeviseを導入してログインなどのシステムを導入したい

そんな人たちに、自分が使ったやり方を自分の復習も込めて書きます。

まずは、データベースにmySQLを使っている、railsプロジェクトを作る

$rails new プロジェクト名 -d mysql

造られたプロジェクトのgemfileに

gem ‘devise’

を記述する。

ここまで書いたら、下記のコマンドを実行して、gemファイルを読み込みます。

$bundle install

まずはここまでで一セット。そして、間髪入れず第二セットいきます。

gem:deviseの関係ファイルをプロジェクトに作ります。このとき、先ほどの作ったrailsプロジェクトのフォルダに移動しておいてください。

$ rails generate devise:install

上記のコマンドを実行すると下記のような文章が出てきます。

============================================================

元記事を表示

コード書いたことないPdMやPOに捧ぐ、Rails on Dockerハンズオン vol.3 – Scaffold, RESTful, MVC –

この記事はなにか?

この記事はが社内のプログラミング未経験者、ビギナー向けに開催しているRuby on Rails on Dockerハンズオンの内容をまとめたものです。ていうかこの記事を基にそのままハンズオンします。ハンズオンは
1回の内容は喋りながらやると大体40~50分くらいになっています。お昼休みに有志でやっているからです。
現在進行形なので週1ペースで記事投稿していけるように頑張ります。
ビギナーの方のお役にたったり、同じように有志のハンズオンをしようとしている人の参考になれば幸いです。

他のハンズオンへのリンク

・ [Vol.1 – Introduction -](https://qiita.com/at-946/items/ffc0ebcc4d08f958197b)
・ [Vol.2 – Hello, Rails on Doc

元記事を表示

Rails データの取得方法

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/2f43199e-2597-eb97-71b7-3e7f7c07d1a9.png)

ActiveRecord クラス

テーブルから情報を取得するために必要なメソッドを兼ね備えたクラス。all(テーブルの全てのデータを取得)、find(テーブルのレコードの内、ある1つのデータを取得)、new(クラスのインスタンス(レコード)を生成)、save(クラスのインスタンス(レコード)を保存)がある。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/5fd33bbc-839f-9dad-e0b7-24d25eb7ed0e.png)
例 変数@ postに1番目のレコードのデータを代入
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/acd

元記事を表示

Rails モデル

モデル

Railsの中でデータベースへのアクセスをはじめとする情報のやりとりに関する処理のこと。
![あ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/3a1b13f3-ea63-4e94-81b6-5e4eaa666ac8.png)
モデルの作成

rails g model モデル名でモデルを作成できる。
例 rails g model post # モデルを作成する
作成されたファイルはapp/models/post.rbにある。
また、これでマイグレーションファイルも作成される。
マイグレーションファイル

テーブルの設計図・仕様書のこと。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/b4b0278a-9557-bd2f-af0a-2dc907454dea.png)
![a.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

【Rails】Sorceryでfacebook認証 エラーと解決法

# はじめに

Sorceryによるfacebookログイン認証をしようとして、盛大なエラー祭りになりました。
誰かのための逆引き辞典になればいいなと思い、記録します。
ざっくりとした流れについては[別記事](https://qiita.com/aiandrox/items/ca798da0bca617074795)で書いています。

## 動作環境

“`
ruby 2.6.5
Rails 5.2.3
sorcery 0.14.0
mkcert 1.4.1
“`

# エラーとその解決法

## ArgumentError in Hogehoge

スクリーンショット 2020-02-06 23.13.20.png

> ArgumentError in BoardsController#index
No a

元記事を表示

【Rails】Sorceryでfacebook認証 Sorceryの設定

# はじめに

mkcertとSorceryの拡張機能を用いて、facebook認証機能を追加しました。
Sorceryのwikiが少し古かったり、facebook for developersとの連携に苦戦したので、備忘録がてら書いておこうと思います。
また、設定に不備があった場合のエラーについては[別記事](https://qiita.com/aiandrox/items/0bd2877820bc779c96e4)で書いています。

## 動作環境

“`
ruby 2.6.5
Rails 5.2.3
sorcery 0.14.0
mkcert 1.4.1
“`

## 前提

– sorceryによるログイン機能
– mkcertでのHTTPS通信を許可
– facebook for developersで「facebookログイン」の作成

は済ませていることとします。
この辺はggれば死ぬほど出てくるので問題ないと思います。

# 簡単な流れ

[Sorceryのwiki](https://github.com/Sorcery/sorcery/wiki/External)

元記事を表示

Rails ビュー

ビューファイル

レスポンスとして返す見た目を設定する。アプリケーションの見た目を定義するファイルのこと。
ビューファイルはapp/views/コントローラー名ディレクトリに、アクション名.html.erbというファイル名で作成される。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/be453bcf-9dcd-e3f6-74e0-e97798d23993.png)

○○.html.erb ファイル

HTMLの記述方法に加え、Rubyのコードを埋め込むことができるファイルのこと。
ビューファイル作成

今回はindexアクションに対応するファイルを作成する前提で進めます。なのでindex.html.erbとする。index.html.erbの中身に記述するとその内容が表示される。
コントローラーにインスタンス変数を定義

コントローラーのアクション内にインスタンス変数を定義すると、その内容をビューファイルで表示できる。

![a.png](https://qiita-i

元記事を表示

【Rails】DBのカラムにインデックスを付与する/しない場合での速度比較をしてみた

## はじめに
RailsでDBにインデックスを付与するメリットを体感するために、試験的に1万件のレコードを作成し、**インデックスの有無**で実行速度の比較をしてみました。

今回のケースでは**およそ18%の速度UP**という結果が出ています:point_up:
※サクッと作成するため、DBはRailsのデフォルトである**SQLite3**を使用しました。

> 2020/02/07追記
10万件のレコードだと20倍の差が出ていることを確認し、結果を追記しました。
@error_401 さんありがとうございます。

## 環境
“`yaml
OS: macOS Catalina 10.15.3
zsh: 5.7.1
Ruby: 2.6.5
Rails: 6.0.2.1
“`

## 事前準備

“`shell:rails_newする
$ rails new sampleapp
“`

“`shell:sampleappディレクトリに移動
$ cd sampleapp
“`

“`shell:db_createする
$ rails db:create
“`

“`

元記事を表示

Rails コントローラー

コントローラー

ルーティングで振り分けられたリクエストを実際に処理する。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/a73ed77e-13e1-ce49-6d44-b4829f68163f.png)
① ルーティングがリクエストを受け取った際、対応するアクションを動かす
② 必要であればデータベースとやり取りをする
③ レスポンスとして返すビューを決める
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/fd649ca3-6394-ae37-3f8d-d57c44c0be02.png)
アクション名は主に7つ。index(一覧表示ページを表示する)、new(新規投稿ページを表示する)、create(データの投稿を行う)、show(個別詳細ページを表示する)、edit(投稿編集ページを表示する)、update(データの編集を行う)、destroy(データの削除を行う)。
コン

元記事を表示

Rails ルーティングについて

ルーティング

リクエストの行き先を指定する。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/c82b6e54-48b4-0921-3215-7bc339d79bea.png)
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/d024b1af-1c72-1712-049f-5bcd2597f71f.png)
ルーティングの記述

configディレクトリの、routes.rbに記述する。
以下のように記述する。
Rails.application.routes.draw do
[HTTPメソッド] ‘[URIパターン]’, to: ‘[コントローラー名]#[アクション名]’
end
HTTPメソッド

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/d4029127

元記事を表示

Railsの基礎

基礎を学習する方にオススメです。
1.rails new

Railsで新規アプリケーションを作成する際に使用する。
rails new アプリケーション名 -オプション名
仮にオプションに-d mysqlを使用したら、MySQLというデータベースに最適化された設定でアプリケーションが生成される。

rails _5.2.3_ new my_sample -d mysql
これでRailsのバージョン5.2.3を用いて、「my_sample」を「-d」オプションでMySQLを指定して作成。
正しくファイルが読み込まれているか確認

pwdで現在のディレクトリパスを指定
bundle installで関連ファイルが読み込まれているか確認。
2.データベースを作成する

現在の状態は、データベースが無い状態なので作成する。
rails db:createで作成できる。
このコマンドはdatabase.ymlというファイルの内容に基づいてデータベースを新規作成する。
database.yml(データベース・ヤムル) ファイル

Railsは運用環境ごとにデータベースを持つので、運用

元記事を表示

発言(post)をroleカラムを使い分ける

##トークルームにて発言を分ける際にやった事のメモです。

今回作ったのが、自作自演でLINEのようなチャットルームにて一人で交互に発言出来るアプリです。
その際にやった事は、roleカラムを作り

・role 0 なら Aさん
・role 1 なら Bさん

と分ける事で実装しました。

##では実際にコードなどをみていきましょう。

まず発言を投稿するformです。

memo_room_idに紐づいた、memo_room_postとなるように、
memo_room_idを取れるようにmemo_room_postをルーティングでネストしてあります。

def new
@memo_room = MemoRoom.find(params[:memo_room_id])
@memo_room_post = MemoRoomPost.new
@memo_room_posts = @memo_room.memo_room_posts MemoRoomインスタンスのデータに紐づいた、memo_room_postsのデータ
@memo_room_p

元記事を表示

【Rails】railsブログサイトの練習で躓いたところメモ

railsチュートリアル+αでブログサイトを作成していて躓いたところをまとめました。

#環境
– ruby on rails
– mysql
– redis
– docker
– macOS

#作ってみて
railsのブログアプリを作ること自体はそこまで難しいものではありませんでした。
ただデータベース周りがややこしくてそこにかなり時間をとられてしまったことが今回の反省点です。

#Rails deviceを使ってユーザー関連機能を作る
ブログアプリにまず必要なのはユーザー関連のあれこれです。Railsはその辺かなり楽に作れるdeviceというgemがあります。

deviceを利用するとログイン認証やアクセス制限などが簡単に実装出来ます。今まで練習も兼ねてユーザー関連は自分で作ってたのですが、一度こういった機能を知ってしまうと戻れなくなってしまいますね。

ここはそこまで詰まらなかったので以下の参考サイトを見れば大丈夫だと思います。

view関連なども「Rails device view」とかで調べたらたくさん出てきます。

【https://qiita.com/Hal

元記事を表示

Heroku + Rails + S3でサイトマップを設置

Herokuを使うと、サイトマップの設置がめんどいです。
レンタルサーバー時代はweb上の適当なツールで自動生成して、FTPでアップロードするだけの超単純な作業だったのですが、今回は色々と大変でした。

とは言えやり方がわかってしまえばそこまで大変な作業ではないので、今後のために手順をまとめておきます。

##全体の流れ
– AWSのアカウントを作る
– S3のバケットを作る
– アクセスキー、シークレットアクセスキーを取得する
– 環境変数を登録する
– gemをインストールする
– サイトマップ用の設定ファイルを作る
– ルーティングを追加する
– サイトマップをS3にアップロードする
– robots.txtを編集する
– Google Search Consoleにサイトマップの場所を登録する

環境変数登録の部分から説明していきます。
アクセスキーの取得までは、「S3 バケット作成」等でググって頑張ってください。

##環境変数を登録する
ローカル、Herokuそれぞれに、以下の3つの環境変数を登録します。
`AWS_ACCESS_KEY_ID`:AWSのアクセスキー
`AW

元記事を表示

Railsチュートリアル 第14章 ユーザーをフォローする – followingアクションおよびfollowersアクションの統合テストに存在する不具合の修正

# `following`アクションおよび`followers`アクションの統合テストにおける、Railsチュートリアル本文記載のテストの不具合

実は、Railsチュートリアル本文の[リスト 14.29](https://railstutorial.jp/chapters/following_users?version=5.1#code-following_tests)に記述されているテストには、1つの不具合があります。

例えば、`app/views/users/show_follow.html.erb`に以下の欠落がある場合を考えてみましょう。

“`diff:app/views/users/show_follow.html.erb
<% provide(:title, @title) %>

元記事を表示

[rails,html]文字省略〜続きを読む実装〜

簡単なブログサイトを作成中に、よくサイトで記事が一定の文字数を超えた時に「…続きを見る」を実装したかったので調べて実装してみた。

##コード

“`
<%= truncate(45, omission: "") %>
“`

45文字以上は切り捨て。omissionは切り捨てた場合に表示させたい文字を書く。

続きを読む.png

無事45文字で切れた!!!

元記事を表示

【Raila】SorceryのExternalを使用してSNSログインを実装(Facebook認証)

# 環境

**注))** ローカル環境で動作確認するための実装です。

`Ruby 2.6.5`
`Rails 5.2.3`
`mysql 5.7.28`
`gem sorcery`
`gem font-awesome-sass`
`gem config`
`mkcert`
`credentials`

# 実装

Sorceryの導入、email・パスワードログイン機能は実装済みであることが前提です。
gemのbundleを済ませておいて下さい。

1. Facebook For Developersの設定
2. ローカル環境の設定

2つに分けて実装していきます。

## Facebook for developersの設定

### 1.Facebookアカウント作成

### 2.Facebook For Developersに登録・アプリ作成

下記資料を参考にしました。
参考資料:[Fantastech!!](https://fantastech.net/facebook-app-id-app-secret)

`アプリID、app secret`は後ほど使用しますので記

元記事を表示

herokuにデプロイした際にCSSで指定した画像が表示されない

##backgroundで指定した画像が消えてる!?

Googleで検索しても・・・中々望んでる解答がない。

[**そこで検索してるうちにようやく見つけた解決策**]

“`
CSS
.xxx {
background-image: url(“heart.png”);
}
“`

これだと、デプロイしても画像は表示されません。
上手く画像を見つけ出してくれないらしいです。

“`
.xxx {
background-image: image-url(“heart.png”);
}
“`

image-urlとすることで、app/assets/images配下から画像を探してくれる。
との事で試した結果。すんなりと直りました。

という事で、今回のメモでした。

元記事を表示

OTHERカテゴリの最新記事