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

Ruby関連のことを調べてみた2020年06月15日
目次

Sessionはブラウザを閉じると消去されるように設計されたCookieであり、それをやり取りするメソッドだった: Railsチュートリアル備忘録 – RailsのSessionとは?

# Sessionはブラウザを閉じると消去されるように設計されたCookieであり、それをやり取りするメソッドだった: Railsチュートリアル備忘録 – RailsのSessionとは?

## Abstract: RailsのSessionとは

Progateのころから気づけば隣にいた`session`

Railsチュートリアルを進めていくと

セッションとかいう変数みたいなものと
それを補足するCookieを利用したログイン維持の仕組み
というモヤモヤした感じを抱いていたが実際は

どちらも

– HTMLをステートフルにするための仕組み
– デフォルトではどちらもCookieに保存される

ただし

– sessionはRailsが実装してくれていたのに対して, Cookieによるログイン維持は後から実装した
– sessionは期限あり(デフォルト?)に対して, 後者は永続的(意図的に設計した)

期限付きCookieを利用した
セッションというHTMLをステートフル化するための仕組みを
**開発者が意図することなく**実装してくれていたのがRailにおけるsession

元記事を表示

dockerでERROR: An HTTP request took too long to complete. と表示されるエラー

# 問題

ERROR: An HTTP request took too long to complete. と表示される。

“`
ERROR: An HTTP request took too long to complete. Retry with –verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
“`

# 原因?

EC2のメモリ容量不足?

# 解決法

停止コンテナ一括削除

“`
$ docker container prune
“`
全コンテナ一括削除

“`
$ docker rm -f `docker ps -a -q`
“`
再起動

“`
$ docker-compose up
“`

解決!

# 参考
https

元記事を表示

Ruby on Rails インストール方法【Mac編】

Qiita便利っすね。(Githubあまり慣れてない)
開発してる最中につまずいても、同じ感じでエラー出て解決方法を解説してくれてる方いるからね。てな訳で、私も技術メモがわりにQittaに残します。

##とりあえず私の環境紹介
| 環境 | バージョン | 備考 |
|:—————–|——————:|:——————: |
| macOS Mojave |10.14.6 |Macbookpro2017 13インチ |
| Homebrew |0.95 |  |
| Ruby |2系     | 最新バージョン    |
| rails5      |5系      |            |

**Rubyフレームワークである

元記事を表示

RubyでLeetCodeやってみる-TwoSum

#概要
プログラミング力を上げるためにLeetCode始めました。
基本問題TwoSumの解説をRubyで行っていきます。

#Two Sum
##問題
整数の配列を与え、2つの要素の和がターゲットの値となるインデックスの組み合わせを配列で返す。

##例

“`ruby
nums = [2,7,11,15]
target = 9
“`

が与えられるとします。

“`ruby
nums[0] + nums[1] = 2+7 = 9
“`
なので

“`ruby
[0, 1]
“`
を返します。

**上記を満たすようなメソッドをRubyで書くことを目標とします。**

##解法1 【Brute Force】
Brute Forceとは日本語で”強引な”という意を示します。
つまり何も考えずに解きます。

“`ruby
# @param {Integer[]} nums 整数の配列
# @param {Integer} target 整数
# @return {Integer[]} 整数の配列

def two_sum(nums, target)
(0..nums.

元記事を表示

chat-spaceの応用実装

# はじめに

この記事は、某プログラミングスクールに登場する、通称chat-spaceの応用実装についてまとめたものです。スクールを卒業した際に、応用実装があったことを思い出したので記事にしてみました。

早速ですが、応用実装とはどんなものかというと、グループに追加したユーザーを検索してもでないようにするというものです。
![画面収録 2020-06-14 22.54.10.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616088/d9e40190-f2a5-e105-f9e2-8acbe9eb821d.gif)

この機能の動作の流れといたしましては。
#### ① キーワード(input)を入力する。
#### ② イベントが発生した際に、チャットメンバーに表示されているユーザーのidを配列(ids)で取得
#### ③ あとは、Ajax通信の際にinputとidsを渡し、idsを含まないユーザを検索するだけです。

以上のことをソースコードで記述すると、次の通りになります(変更した部分

元記事を表示

cssで真ん中に配置する

# 真ん中に配置する
自分用に真ん中に配置する方法についてまとめて見ました!

# 私が使うやつ
– marginを使う
– text-alignを使う

要素を真ん中に配置するのはmarginをよく使います
margin: 0 auto;
とか言う形で使うことが多いですね!
文字を真ん中に配置したいときは
text-align: center;
とすることが多いです!

元記事を表示

[Rails] jQueryを利用する

##はじめに
**1.gemの追加**

“`ruby:Gemfile
gem “jquery-rails”
“`
bundle installを行いましょう

**2.application.jsファイルに追記する**

“`ruby:app/assets/javascripts/application.js
//= require jquery // ←ここを追加
//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
“`

これで、jQueryを使う準備が整いました。
##【イベントの記述】
セレクタ名にはclass,idの=の後が入ることが多い
.はclass名の前に #はid名の前につく

“`ruby:
$(‘.セレクタ名’).イベント名(function(){
 イベント発生時に行われる処理
});
“`
**イベントの一覧**

| click | 指定した要素で左クリックしたときに処理がおこなわれる。 |
|:–

元記事を表示

payjpを使ってクレジットカード機能を導入しちゃおうってわけ(準備編)

暑くなってきましたね。:flag_jp:
コロナの影響あるからってアタシ負けないんだから。:pouting_cat:
そろそろエアコンの掃除でもしようかね!!

話がそれましたね。
そう今回はpayjpに関して。
みんな焦んないで。
タブ開きすぎ!ってパソコンあるある言うからちょっと待って。
さぁ行くわよ!!!:older_woman_tone5:

#1 payjpってなんぞや??

初めての方もいるかもしれないので簡単に説明すると、
クレジットカード機能を実装するにあたってすごく便利なものです。
それはなぜか?

フリマアプリで考えるとまずテーブルは

・userテーブル
・商品テーブル
・決済テーブル

以上が購入にあたり必要になります。
メルカリ使ったことある人ならわかると思うんですが、商品購入の際にクレジットカード決済ができる。
そんで一度使ったことあるクレジットカードは保存してあるので、次が登録せず使える。
ですがこれいざ作るってなって考えてみたらこう思うわけ。

### DBにクレジットカード情報丸々保存して、それ流出したら大問題ですやん!!!!

そうなのそうなの。

元記事を表示

【Rails】投稿に対してタグ付けする機能+タグで投稿を絞り込み表示する機能の実装手順

## 概要
__・自身の投稿にタグ付けできるようにする機能を実装する。__
__・その投稿に付けられたタグで絞り込み検索ができるようになる機能を実装する。__

## 前提
__環境__
 Ruby 2.6系
 Rails 5.2系

__ライブラリ__
 Slim

__上記環境のRailsアプリ雛形__
 [Railsアプリケーションセットアップして、deviseとSlimを導入する手順](https://qiita.com/kurawo___D/items/5fad1e08ae29c0bc5a45)

__↓完成形イメージ↓__
![ezgif.com-video-to-gif (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606750/dc85e1e7-d242-5a1d-6e80-2ad022fbd775.gif)

## 実装

### 1.モデル設計とアソシエーション

![スクリーンショット 2020-06-13 20.14.13.png](https://qiita-image

元記事を表示

[デプロイエラー] Mysql2::Error: Table ‘〜’ already exists: CREATE TABLE `〜`

# これは何
Railsでチーム開発中、Capistranoでの自動デプロイ時のエラー
「Mysql2::Error: Table ‘〜’ already exists: CREATE TABLE `〜`」がでた時の対処方法。
直訳すると、「既にテーブルがあるから無理だよ」ですね。

※未経験初心者が書いています。ここ違うよ!もっと良い方法あるよ!という事がありましたら、ご指摘いただけると幸いです。

# 対処方法
結論から言うと、データベースのスクラップアンドビルドです。あなた自身が想像と破壊の神シヴァになることだったのです。

真面目にやります。。。
まずはターミナルからSSHログインしてAWSに接続します。
ログイン後はmysqlに接続して中身を見てみましょう。

“`
[ec2-user@]$ mysql -u root -p

# mysqlのパスワードです
Enter password:
“`

mysqlに入ったら、本番環境のデータベースを見てみます。

“`

mysql> show databases;
+—————————

元記事を表示

[Rails]遷移元のURLを取得してリダイレクトする方法

# やりたいこと
– 商品ページから購入ボタンを押す
– クレジットカードが登録されていないと、カード登録画面に遷移
– カード登録後、**購入しようとしてた商品ページに戻る(リダイレクトする)**

元々は、カード登録後カード情報を閲覧する画面に遷移していたので、購入しようとしていた商品をまた探して購入ボタンを押す、というユーザーにとても不親切な挙動でした。

## 元の状況

購入ボタン押す → カード登録画面に遷移
![92e9b1521895f97a6e1f2c4a46c7ce3f.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602794/6b80910e-7b1f-82d0-9cc8-64a6ad3f89fa.gif)

カード登録 → カード情報閲覧画面に遷移
![e94f61e09decdfded6051eabaa91cd4b.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602794/daa419ac-

元記事を表示

railsチュートリアル格闘記Ⅲ

#環境
ruby 2.6.3
rails 6.0.3
AWS cloud9

# 10.3.4 ユーザー一覧のテスト
“`
michael:
name: Michael Example
email: michael@example.com
password_digest: <%= User.digest('password') %>

archer:
name: Sterling Archer
email: duchess@example.gov
password_digest: <%= User.digest('password') %>

lana:
name: Lana Kane
email: hands@example.gov
password_digest: <%= User.digest('password') %>

malory:
name: Malory Archer
email: boss@example.gov
password_digest: <%= User.digest('password') %>

<%

元記事を表示

【Rails】enumの使い方 

##はじめに
RubyやRailsで、Enumの使い方を
忘れない為のメモ。

##enumとは?
「Enum」は「列挙型」のこと。
・DBにはint型やboolean型で登録され、数値に紐付く任意のキー名を付けることができる。
・ソースコードでは、紐付くキー名を用いれる。

利点
・データ型をintegerにするとDBに数字で登録されるが、数字だけだと数字が持つ意味が共有出来ない。
・文字列として定義していたらタイポする可能性が多くなるが、enumを使うとその心配がない。
・修正の際に楽。

##定義方法
モデルに対してenumを定義する必要があります。
定義方法は、2通りあります。
**1.定義のみ**
**2.定義に数値を指定**
#定義のみ指定
配列で定義をします。定義順に0から順に紐付けされます。
下記の例では昨日→0、今日→1、明日→2と自動的に振り分けされる。
enum カラム名:[:付けたいキー名]でenumを指定していきます。

**※[ ]なのと : の位置に注意**

“`ruby:モデルのファイル
enum カラム名: [ :昨日, :今日, :明日

元記事を表示

[Rails] syntax error, unexpected tSTRING_END, expecting ‘ ‘が出た

#syntax error, unexpected tSTRING_END, expecting ‘ ‘

“`seed.rb
StaffMember.create!(
email: “taro@example.com”,
family_name: “山田”,
given_name: “太郎”,
family_name_kana: “ヤマダ”,
given_name_kana: “タロウ”,
password: “password”,
start_date: Date.today
)

family_names = %w {
佐藤:サトウ:sato
鈴木:スズキ:suzuki
高橋:タカハシ:takahashi
田中:タナカ:tanaka
}

given_names = %w {
次郎:ジロウ:jiro
三郎:サブロウ:saburo
松子:マツコ:matsuko
竹子:タケコ:takeko
梅子:ウメコ:umeko
}

20.times do |n|
fn = family_names[n%4].split(“:

元記事を表示

An error occurred while installing json (2.3.0), and Bundler cannot continue

#初めに
これが本当に正しい修正方法かは疑問ですが、
少し戸惑ってしまったり悩んでしまったのでここに記述します。

対応としては、使用Rubyのバージョン変更です。
色々言われた通りコマンド打ってもうまくいかなかったので、、、

#エラー

`$ bundle install`として出るエラー

“`
Gem files will remain installed in /Users/***/sample/vendor/bundle/ruby/2.6.0/gems/json-2.3.0 for inspection.
Results logged to /Users/***/sample/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/json-2.3.0/gem_make.out

An error occurred while installing json (2.3.0), and Bundler cannot continue.
Make sure that `gem install json -v

元記事を表示

[RSpec]単体テスト(gem:factory_bot使用)

#RSpec導入
web-consoleは重複しないように注意

“`ruby:Gemfile
gem ‘rspec-rails’

group :development do
gem ‘web-console’
end
“`

`bundle install`後に`rails g rspec:install`

見やすいフォーマットで表示させるために .rspec ファイルを次のように編集

“`ruby:.rspec
–format documentation
“`
この時点でRSpecが正常に動くか確認しておきましょう。
`bundle exec rspec`

“`ruby:ターミナル
正常に動いていればこのようになる
No examples found.

Finished in 0.00031 seconds (files took 0.19956 seconds to load)
0 examples, 0 failures
“`

##作成されるファイル
**.rspec**
**spec**
**spec/spec_helper.rb**
  

元記事を表示

[Railsチュートリアル 第2章] カラム名を打ち間違えたときに対処したこと

#はじめに
Railsチュートリアル第2章「2.3.1 マイクロポストを探検する」の学習中に、間違ったカラム名で、scaffoldでコードを生成してしまいました。

#ミスをしてしまったときの手順
:one: Micropostを誤って「mivroposts」と入力してしまいました。

“`
$ rails generate scaffold mivroposts content:text user_id:integer
“`

:two: タイプミスに気づかずに、そのままmigrateしてしまいました。

“`
$ rails db:migrate
“`
#ミスをした結果
routes.rbに表示されて初めてタイプミスに気づきました。

“`routes.rb
Rails.application.routes.draw do
resources :mivroposts #まいぶろぽすつ、ってなんやねん
resources :users
root ‘users#index’
end
“`
# 調べたこと
googleで「rails g 名前間違い」と検索

元記事を表示

プログラミングを本気で始めて1ヶ月@テックキャンプ

こんにちは。駆け出しエンジニア歴1ヶ月のカトです。Qiita初投稿です。

Qiitaは、情報集めだけかなぁとは思っていたのですが、学習のアウトプットの場として、投稿することにしました。間違いだらけかもしれませんが、ご容赦ください。

初めての投稿なので、簡単にこれまでの経緯と学習を初めて1ヶ月の感想を綴ります。

# 学習までの経緯
2020年7月までラオスでJICA協力隊として活動の予定でしたが、いろいろあってコロナ帰国で2020年3月に日本に戻り、そのまま任期終了となりました。元々関心を持っていたプログラミング。ある意味、学習するのに良い期間となったので、本気でプログラミングを始めました。

# 学習方法
元々独学で学習を進めていましたが、自分に甘い人間なので、中途半端に学習したくないと思い、ほぼ「ノータイムポチり」で、学習サポートが充実している『TECH::CAMP』エンジニア転職コースで学習を始めました。

# 1ヶ月の感想
### 「学びに対する姿勢が変わりました」
##### 何が良いのか?
* メリハリのある学習スタイル
* アウトプット重視
* 共に頑張る仲間
* 質

元記事を表示

【Rails】ExecJS::RuntimeUnavailableの解決方法

# 解決策→mini_racerをインストールしよう

MacのOSアップデート後に`rails s`でサーバーを立ち上げようとしたところ、エラーが発生。

“`:ターミナル
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
(ExecJS::RuntimeUnavailable)
“`
調べてみると、JavaScriptを実行するために必要なランタイムが無いぞ!と言っているらしい。

解決策を調べていると、どうやらエラー文にある`https://github.com/rails/execjs`に利用可能なランタイムの一覧のリンクが表示されているらしい。

その中にある、`gem ‘mini_racer’`が良さそうという情報があったので、bundle installすることに。
結果、無事にサーバーを立ち上げることができるようになりました!

# 結論
“`:ターミナル
gem ‘mini_racer’
“`

元記事を表示

[JQuery] ファイル選択した画像を即時プレビュー表示する方法 +画像投稿gem追加

#完成イメージ
![ezgif.com-optimize.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654313/c0ddc308-9053-dc53-4e01-7b97a360ceda.gif)
– 画像を選択する。
– 画像をDBに登録する前にプレビュー表示。
**プレビュー機能だけ見たい方は下ののJQueryを設定だけ読んでください**

####環境
ruby 2.5.7
rails 5.2.4.3
jQueryを設定できるようにしてある。

##画像投稿用gem
今回は「Refile:リファイル」を使用します。Refileは、アプリケーション向けのファイル・アップロードのライブラリです。
**Refileには、以下のような特徴があります。**

・画像を簡単に組み込むことができる。
・サムネイルを生成できる。
・ファイルのアップロード先を設定できる。

さらに今回は、サイズ調整など画像加工を行うgem(MiniMagick)も追加もしています。

“`ruby:Gemf

元記事を表示

OTHERカテゴリの最新記事