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

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

CircleCI 2.1 設定サンプル(Rails + Rspec + Rubocop + Jest + ESLint + Yarn + Postgres)

# 環境

– Circle CI 2.1
– Rails 5 + PostgresSQL 9.6 + Yarn
– 主にCircle CIの設定のため、上記環境には大きく依存していません。

# やっていること

– テストの実行(`rspec`、`jest`)
– Linterの実行(`rubocop`、`eslint`)
– `RAILS_ENV: test`で実行しているため、`Gemfile`内で`rubocop`が`group :development, :test`に定義されている必要があります。
– デプロイ(`develop`ブランチへマージされた時に、`capistrano`を使って実行)、及び結果を`slack`に通知
– 上記に付随する処理(ソースコード、ライブラリのインストール及びキャッシング)

# 設定例

“`yaml:.circleci/config.yml
version: 2.1

orbs:
slack: circleci/slack@3.3.0

executors:
default:
working_director

元記事を表示

Rails アプリを作成する際に出たエラー

# 目的

– アプリ作成コマンド`$ rails new アプリ名`を実行した際に出力されたエラーを解決したときの話をまとめる

# エラー

– 下記にエラー内容を記載する。

“`terminal
[10:51:19]MacBook-miriwo~/workspace/study/rails$ rails new tropical_fish_sns –database=mysql
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create Gemfile
run git init from “.”
Initialized empty Git repository in /Users/admin/workspace/study/rails/tropical_fish_sns/.git/
create p

元記事を表示

Choices.js + fetchAPIでフィルタ付き動的セレクトボックス [脱jQuery]

## 概要
件名のモノが必要になった時
ググって出てきたのはajaxやcoffee script、select2にchosenと
内容が古かったり環境制約で使えないものだったりで苦しめられたので
rails6とpure javascriptで動くサンプルを遺します↓

***

親カテゴリの選択に応じて動的に子の選択肢をセットする
![Screen Shot 2020-02-09 at 2.18.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582041/81e9dcdb-c55b-fbd6-37b9-6b6b8484bd02.png)

***

フィルタ検索機能
![Screen Shot 2020-02-09 at 4.01.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582041/6e579919-dd29-9ddc-9ba6-f1c5b9a86c49.png)

***

#### [Sampl

元記事を表示

世はまさに Web アプリケーションフレームワーク戦国時代?

Web アプリケーションフレームワークを選ぶ基準って、人それぞれ、色々とあるとは思いますが、やっぱり流行も気になってしまうのが Web エンジニア心というものではないでしょうか?

それに、よく使われているということは、

* 当然、フレームワークとしての成熟度は高いはずですし、
* サードパーティのライブラリも充実していて、
* 比較的、Web サイトや書籍などから得られる情報量も多い

と、考えられます。

初めて Web アプリを作成するという人はもちろん、

ある程度、知識のある方でも、軽い気持ちで新しいフレームワークを学んでみたいというのであれば、流行りに乗っておくのが無難かもしれません。

というわけで、ここでは、

* Ruby
* Python
* PHP
* JavaScript

で、実装されている「 **人気の Web アプリケーションフレームワーク** 」について、興味本位でまとめてみましたので、良かったら何かの参考にでもして頂ければ幸いです。

## Ruby on Rails vs. Sinatra

Ruby の Web アプリケーションフレームワークと言

元記事を表示

初めてのWebアプリ制作 – ruby on rail – 4日目

#はじめに
せき風邪をひいて4日程寝込んでおり、更新が止まってしまってしまいました・・・(´・ω・`)
新型コロナが流行ってる最中なので、病院ヘはいかず自宅療養してました
皆様も今の風邪にはご注意ください!

#4日目
それでは、4日目についてまとめて行こうと思います。

まず最初に、風邪で寝込んでる最中もスマホを使って、
rails関連の記事などを読んでいました。
そんな中で下記記事に行きつき、衝撃を受けます・・・。

Herokuでアップロードした画像が時間経つと消える問題

Herokuで画像アップロード機能を備えたWebアプリをデプロイした場合、
画像の保存自体はできるが、一定時間で消えてしまうという内容の記事でした。

Herokuで画像アップロード機能を利用したWebアプリをデプロイする場合は、
画像をクラウドストレージなどを利用する必要があるそうです。

そのため、画像アップロード機能自体を見直すことになりました。

#画像アップロード機能の

元記事を表示

READMEとは説明書。まず最初に読んでほしい

リードミー(Readme)とは、ソフトウェアを配布する際の添付文書のひとつ。配布物の一般的な情報を記載したファイルである。多くの場合、そのソフトウェアをインストールし使用する前に読むべきものとされている。(引用元:Wikipedia)

自分でテンプレートを作る、他人のテンプレートを使うことで作業効率アップ!

そのソフトウェアでなにができるのか、端的にシンプルな記述。

参考

【GitHub】シンプルなREADME.mdの書き方 -コピペで使えるテンプレート付き-

////rails修行中の大きなぼやき////

元記事を表示

MacでRuby on Railsの環境構築(http://localhost:3000/を立ち上げるまで)

MacでRuby on Railsの環境構築するときの簡単な手順です!とりあえず、何もないところからrails sでサーバーを立ち上げるまでです!

## homebrewをインストール
http://brew.sh/index_ja.html

## homebrewを使用して、rbenvおよびruby-build(プラグイン)をインストール

### rbenvインストール
“`$ brew install rbenv“`
“`$ brew install ruby-build“`
“`$ rbenv version“`

・ruby-buildは、rbenvのプラグイン。(“`$rbenv install“`コマンドを使うためのプラグイン)
・rbenv installコマンドで、rubyのver2.6.4をインストール

※注意:
○Homebrewのパスを通す必要あり
“`$ echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bash_profile“`
“`$ echo ‘if which rbenv

元記事を表示

Net::HTTPメソッドを使ってBasic認証を突破しよう

こんにちは。

今回、Rubyでgemを使わずにNet::HTTPメソッドを使ってBasic認証を突破し、スクレイピングしました。あまり文献がなかったので、誰かの参考になればと思いこの記事を書いた次第です。

Rubyのバージョンは2.6.5です。

1行1行丁寧に解説していこうと思います。コードだけ知りたい!という方は完成形のコードを参考に実行してみてください。
完成形のコードはこちら↓

“`Ruby:scraping.rb
require “net/http”

username, password = “ユーザー名”, “パスワード”
uri = URI.parse(“スクレイピングしたいページのURL”)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
http_get = Net::HTTP::Get.new(uri.path)
http_get.basic_auth(username, password)
response = https.request(http_get)
respons

元記事を表示

【RSpec】spec/rails_helper.rbを和訳&補足してみた

# はじめに

rails_helperの設定をこんな風にしていますという記事はあるのですが、そのオプションによって何をしているのか今一つわからなかったので、自分用に和訳&補足してみました。
忘れた頃の自分やRSpec初心者のためになればと思います。正確性に関しては自信ないです!

RSpecのバージョンは`3.9`です。

(2/9追記)編集リクエストを元に修正しました。

## 導入

“`terminal
$ rails g rspec:install
“`

コマンドを打つと、`.rspec`, `spec/rails_helper.rb`, `spec/spec_helper.rb`ファイルが生成されます。
`rails_helper.rb`はデフォルトではこのようになっています。

“`rb:spec/rails_helper.rb
# This file is copied to spec/ when you run ‘rails generate rspec:install’
require ‘spec_helper’
ENV[‘RAILS_ENV’] ||= ‘

元記事を表示

今日はクライアントサイドでセッション管理してもいいのか!!(あまりよくない)

# これはなに?
セッションをクライアントサイドだけで管理するのは難しいのでやめようね。という話をする機会が稀にあるのですがどういうときに困るんだっけ?またはどういう値はクライアントサイドに持っていいんだっけ?というのを毎回自分で考えるのが面倒なので書きました。
ここではクライアントサイドだけでセッション管理するのが難しい理由について説明します。そのあとに翻って一般的にセッションはどういう性質を持っているのか(あるいは持っているべきか)という話をします。

# クライアントサイドだけでやるセッション管理の例
Railsにはセッションストレージとして、CookieStoreというものがあります。説明に関しては
[Railsセキュリティガイド: 2.3 セッションストレージ](https://railsguides.jp/security.html#%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8) から引用しますが
> RailsのCookieStoreは

元記事を表示

Gemfile version 指定

#~>x.x.x version x.x.x以上、x.x.x+1.0 未満

“`ruby:Gemfile
gem ‘rails’, ‘~> 5.2.4’
rails 5.2.4以上 5.3未満
“`

元記事を表示

コード書いたことないPdMやPOに捧ぐ、Rails on Dockerハンズオン vol.4 – Static pages –

この記事はなにか?

この記事はが社内のプログラミング未経験者、ビギナー向けに開催している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]Ajaxを用いて非同期で投稿機能といいね機能の実装

##実装すること
Ajaxを用いて非同期通信を行い、下記のコードを書いていきます。 
①新規の投稿が新着投稿一覧の一番前に画面のリロードなしで表示される
②いいねのハートの色といいね数を画面のリロードなしで変更する

##ER図
User:Item = 1:N
Item:Like = 1:N
User:Like = 1:N
LikeテーブルがItemとUserの中間テーブルになります。
いいね非同期.png

##ページ設計
・[items/index]投稿一覧でいいねができる
・[items/show]投稿詳細でいいねができる
##モデルの作成
今回はUserモデル、Itemモデル、Likeモデルを作成します。
Userモデルはdeviseを使用してモデルを作成していきます。
###devise・jQuery・r

元記事を表示

Mysql2::Error at /auth/twitter/callback Incorrect string value: 【Rails】

#Mysql2::Error at /auth/twitter/callback Incorrect string value:
MtSQLのエラーで、保存する値に絵文字:cake::cake::cake:が含まれていると起きる。

絵文字を扱うことが出来る文字コードは`utf8mb4`だがデータベースに設定されていた文字コードは`utf8`だった。それが原因。

#MySQLに設定された文字コードを調べる
“`
$ show variables like “chara%”;
“`

#文字コードを変更する
MySQLのファイルはルートディレクトリの/etc/my.cnfにある。

“`
$ vim my.cnf
“`

以下のように`utf8`を`utf8mb4`に変更と追記。

“`
[mysqld]
(省略)
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4
“`

DBの再起動

“`
$ systemctl restart mysqld.service
“`

#Rails

元記事を表示

Rails レイアウトテンプレート

アプリケーションのビューファイルの共通部分をまとめたもの。
yield メソッド

bodyタグ(…)の間に、<%= yield %>と記載がある。この記述があることによって、「ここに全てのビューファイルが集約される」という仕組みができる。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/75558a7e-3f22-f658-fb1e-011f73db5b59.png)

![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/49f15acc-ea2d-4c4c-1f38-6b89d3bcaa97.png)
上記のようにapplication.html.erbに記述
そうするとOur Blogと新規投稿のヘッダー表示はどの画面でも共通。
リセットCSS

CSSファイルはapp/assets/stylesheets/というディレクトリに配置する。app

元記事を表示

Rails マイグレーションファイルの変更

今回はスペルミスしたと仮定
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/86982352-3429-9ff4-1f98-4e37ae9c0c32.png)
実際にDBを開くと
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576859/b776f3ef-d628-7ef2-acc3-105dd353708a.png)
修正するには

rails db:rollback コマンドを実行する。
流れとしてはロールバック→修正→マイグレート。
マイグレーションがすでにマイグレート済みかどうか

rails db:migrate:statusで調べれる。upなら適用、downなら適用されていないので修正可能。
修正したら再びマイグレーションを実行
rails db:migrate

元記事を表示

RESTを分解してみた

#はじめに
Railsチュートリアルをやっていて
「セッションをRESTfulなリソースとしてモデリングできると、他のRESTfulリソースと統一的に理解できて便利です。」
みたいな文章があってRESTとかRESTfulとかの意味を調べてもしっくりこなかったので自分なりにRESTを噛み砕いてアウトプットしようと思います。

#結論
まずはじめに結論から述べると、

**「クライアントとサーバー間で行われる送受信は、決められた形式(HTTP)で行われている。ということを表現したもの。」**

という自分なりの解釈になりました。

#経緯

上記の結論に至った経緯を書いて行きます。
まずは自分なりにREST(Representational State Transfer)を英訳してみました。

Google翻訳にてシンプルに『Representational State Transfer』と翻訳
↓↓
結果「代表的な状態の移転」
というなんのこっちゃ分からない表現に。。。

そこで一つ一つを分解して英訳を実行。
①Representational→代表的な、具象の(はっきりした姿、形)

元記事を表示

【Rails】param is missing or the value is empty:について

#問題箇所のコード
“`controller.rb
def create
@collect = Collect.create(collect_params)
if @collect.save
redirect_to “/group/show/#{@collect.group_id}”
else
render “new”
end
end
(省略)
private
def collect_params
params.require(:collect).permit(:url, :group_id)
end

“`

主にcollect_paramsが悪いはず。

#param is missing or the value is empty:
意味は単純にparamsが存在しないか空ですとなる。

パラメータを確認するとこんな感じ。ちゃんと情報渡せてるように見えるけどfalseになってる。

“`

元記事を表示

MacでDocker+Rails+MySQL環境構築手順メモ

勉強するときに環境構築にかなりつまづいたので、その手順をメモしときたいと思います。

#環境構築手順
前提として、rails開発用のディレクトリが用意されているものとします。

以下の手順に従ってファイル作成やコマンドを実行していけば問題なく手順は整うと思います。

##Dockerfileの作成(以下をコピペ)

“`dockerfile

# rubyはお好みのバージョンで(ローカルのバージョンがいいと思います)

FROM ruby:2.6.3

# 必要なパッケージのインストール(基本的に必要になってくるものだと思うので削らないこと)

RUN apt-get update -qq && \

apt-get install -y build-essential \

libpq-dev \

nodejs

# 作業ディレクトリの作成、設定

RUN mkdir /app_name

##作業ディレクトリ名をAPP_ROOTに割り当てて

元記事を表示

外部キー作成の時の注意事項

###テーマ「データベース 頭文字は大文字か小文字か」
この投稿はRailsのデータべース作成に関する記事です。
データベース周辺は間違えると後のアプリ開発に悪い影響を与えてしまいます。
このミスを参考にみなさんは出来る限りデータベース周辺では間違わないようにしてください!

###今回の主犯
外部キーの頭文字を大文字にしてしまったため、seed.rbからデータを入力できなくなった。
実物はこちらです。Faculity_id←これ。。。本来はfaculity_idとなるべきはず

“`scheme.rb

create_table “majors”, force: :cascade do |t|
t.index [“Faculity_id”], name: “index_majors_on_faculity_id”
end
“`

###ミスの原因
1ヶ月ぶりにRailsを触り、フレームワークの使い方を忘れてしまったこと:sob:
(初心者は毎日触らなけれぼなりませんね。思い知りました?)

###ターミナルで入力した間違いのコマンド
referencesの前を大文字

元記事を表示

OTHERカテゴリの最新記事