Ruby関連のことを調べてみた2019年12月31日

Ruby関連のことを調べてみた2019年12月31日

rails: add_indexを追加したときにrake db:migrateが失敗したときの対処方法

### “add_index“が失敗したときに下記のようにすることで解決出来る

__before__

“`ruby
class CreateIds < ActiveRecord::Migration[6.0] def change create_table :ids do |t| t.string :custom_url add_index :ids, :custom_url, unique: true t.timestamps end add_index :ids, :custom_url, unique: true end end ``` __afeter__ このようにすると、``rake db:maigrate``が通るようになるはず ```ruby class CreateIds < ActiveRecord::Migration[6.0] def change create_table :ids do |t| t.string :custom_url t

元記事を表示

omniauth CVE-2015-9284 はどうすればよいのか

# 困ってること

> Patched version: No fix

`Gemfile.lock` において omniauth 1.9.0 を使っているとGitHubにこれを指摘されるし、お客さんにこれ使わないとできないの?って言われた時にいや大丈夫っすよ、、、と言えるようになりたい。

# 解決方法

GEMのアップデートでは解決できないし、最新版(1.9.0)のGEMでも解決できない。このアラートは出続ける。

GEM側での対応はない(仕様)ので実装でがんばる。具体的には `/auth/:provider` へGETアクセスできないようにし、CSRF対策GEMを導入してPOSTのみ受け付けるようにする。

ここより下は詳細と公式の和訳など

# CVE-2015-9284 (GitHubより引用

> Vulnerable versions: <= 1.9.0 > Patched version: No fix

# CVE-2015-9284 (CVEより引用

[CVE – CVE-2015-9284](https://cve.mitre.org/cgi-bin/cven

元記事を表示

Rails6でMapboxを導入する

## はじめに
最近railsでMapboxを使った地図アプリをつくる機会があったので、はじめの**導入部分**を共有します。

## 開発環境
rails 6.0.2
ruby 2.6.5

## 最低限のセットアップ

**※必要に応じてファイル名等変えてください**

rails new アプリ名 -d postgresql
yarn add mapbox
yarn add mapbox-gl
yarn add dotenv
rails db:create
rails g controller maps

## Apiキーの取得
以下のサイトでアカウントを取得し、Apiキーを取得します。
[Mapbox](https://www.mapbox.com/)

## .envファイルの作成
.envファイルを作成し、Apiキーを記します。(これは架空キーです)

“`rails:.env
MAPBOX_API_KEY=pk.eyK6PjoiZnVqaW8iLCJhIjoiP2szcGJ5MDFkMDFzazNlbGZzZ2ozbzhyMCJ9._IgaTSs

元記事を表示

RubyとRailsのバージョンの変更方法

#Rubyのバージョン変更方法

①利用中のRubyバージョン確認

“`
$ ruby -v
“`

②インストール可能なRubyバージョン確認

“`
$ rbenv install –list
“`

③目的のバージョンをインストール(1-2時間かかります)

“`
$ rbenv install 2.6.3
“`

④利用するバージョンを変更

“`
$ rbenv global 2.6.3
“`

⑤現在コンソール上で利用しているRubyバージョン確認

“`
$ rbenv versions
“`

⑥rehashしてあげる ※ファイルの場所を変更して使えるようにする

“`
$ rbenv rehash
“`

#指定したRailsのバージョンでプロジェクトを立ち上げる方法

①現在インストールされていて、使用できるRailsの確認

“`
$ gem list rails
“`

②Railsの使用したいバージョンをインストール(使用したいバージョンが無かった場合)

“`
$ gem install -v 5.1.7
“`

もう

元記事を表示

【Rails】スクレイピングを使ってブログの記事一覧に記事内の写真を添える

#はじめに
今回はRubyでスクレイピングに挑戦していきます。

前回の記事でブログを作成しました。
[【Rails】summernoteを使って画像も投稿できるブログを作る](https://qiita.com/sanpo_shiho/items/2b05bd8499285290d704)

ブログといえばはてなブログですが、
![スクリーンショット 2019-12-30 20.59.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417600/a329f69c-16bc-1f55-1e95-67d1cda75bd4.png)
([知り合いのお店のブログ](https://www.katharsis.work/archive)です)

このようにその記事内で使われている写真が横に乗るようになっています。

これを実現してみたい。。

前回記事で使ったsummernoteですが、画像を投稿するとbase64でimgタグで直保存されます。

例えばこんな感じです

“`html:

ホゲホゲ

元記事を表示

【Rails】NoMethodError (undefined method `current_sign_in_at’ for #):

## はじめに
Railsでgem **devise_token_auth**を導入時に発生した内容です。

Eメール認証の確認をしようと、
`http://localhost:3000/api/v1/auth/sign_in`
にPOSTリクエストを出すと以下エラーが発生しました。

“`shell:
Started POST “/api/v1/auth/sign_in” for … Processing by … DeviseTokenAuth::SessionsController#create as JSON

Completed 500 Internal Server Error in 311ms (ActiveRecord: 17.4ms | Allocations: 7912)

NoMethodError (undefined method `current_sign_in_ip’ for #):
“`
※rails serverより抜粋。

このエラーに対して、自分がうまくいった解決法を残します。

## 環境
“`yaml

元記事を表示

【Rails】summernoteを使って画像も投稿できるブログを作る

#はじめに
summernoteを使って画像の投稿などにも対応したブログを作っていきたいと思います。

何か間違っている点があればコメントをください…!

#レシピ
##1. ER図を書く

データ構造をまとめます。ER図の作成は[pgmodeler](https://github.com/pgmodeler/pgmodeler)を僕は使用しています。
![スクリーンショット 2019-12-28 19.01.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417600/3f300445-a872-0f59-b411-00446e152e35.png)

こんな感じになりました。

##2. generator使って丸っと全体像を作成

Rails初心者の僕はgeneratorに頼りきっています。

“`
$ rails generate scaffold Blog_post title:string content:text created_by:string updated_by:string

元記事を表示

Ubuntu 19.10のRedmineでのいくつかのバグフィックスをした

# Ubuntu 19.10のRedmineでのいくつかのバグフィックスをした

これまでもアップしたのも含め、Ubuntu 19.10のRedmineでは以下の不具合がありました。
致命的だったモーダルダイアログの件以外はちゃんとバグレポート上げれてないけど…。

* jQuery UIのバージョン違いのため、ダイアログが表示されない。
* jQuery UIのバージョン違いのため、Closeボタンの上に「Close」というテキストが表示されてしまう。
* ガントチャートでカミナリ線・関係線が表示されない。
* チケットのインポートができない。

他にも以下の便利機能を足してみました。

* インポート時の日付形式で「yyyy/mm/dd」形式を使えるようにする。
* ガントチャートの表示開始を前月にする。
* [チケット新規作成時の担当者を自分にする](http://redmine.jp/faq/issue/set_current_user_to_assigned_to_field/)

## jQueryのバージョン違いについて

いくつかのメンバ関数がプロパティに変更されて

元記事を表示

Railsチュートリアルメモ – 第1章

[目次はこちら](https://qiita.com/yokohama4580/items/dedfd5510080273dc2a0)

Railsチュートリアル(ローカル版)の第1章をやってみて気づいたことのメモを記載していきます

## 1.1 はじめに
割愛
# 1.2 さっそく動かす
ローカル(mac)で普通にチュートリアル通り実行していくと、最初の

“`
printf “install: –no-document \nupdate: –no-document\n” >> ~/.gemrc
“`
“`
gem install rails -v 5.1.6
“`

“`
Fetching: concurrent-ruby-1.1.5.gem (100%)
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
“`
となる。
ググると、

元記事を表示

Railsチュートリアルメモ 目次

# はじめに
– ここ1年半くらいpythonをメインに触っていたが、転職サイトを眺めていたらまだまだRailsの需要が高い(特にスタートアップ界隈)なことに気づき、ちょうど年末で暇なので久々に[Rails チュートリアル](https://railstutorial.jp/)を復習してみようと思った
– 以前学習したときはcloud9がawsに吸収される前だったのでcloud9を使うことに抵抗がなかったが、rails tutorialをやるためにわざわざawsにログインしてcloud9使うのは手間だなと思ったので、ローカルでやってみることにした(aws経由じゃなくても使える?みたいだが、まぁ普通にローカルの方がサクサク開発できるし)
– エディタはVSCodeを使用しています
– 章ごとに気づいたことをまとめていきます(途中で力尽きたらごめんなさい)

# 目次
[第1章メモ](https://qiita.com/yokohama4580/items/11216715171fd11e7931)
[第2章メモ]()※後日記載予定
[第3章メモ]()※後日記載予定
[第4章メモ]()※後

元記事を表示

rails: Arrayでもwill_paginateを使えるようする方法

### 前提
1. “gem pagenate“は事前に使える状態にしておく。
2. “bundle install“から使える状態までにする方法に関しては“README“を参考にしてください。
FYI: [will_paginate](https://github.com/mislav/will_paginate/blob/master/README.md)

結論から言うと、デフォルトではwill_paginateはarray型の時は使えない。
そのため、“config/initializers“の配下にちょっとした記述をする必要がある。
ファイル名はなんでもいいのでとりあえずファイルを作る。(ex: “will_paginate_array.rb“)
ファイル作成後は以下の一文を追記する。

“`ruby
# will_paginate_array.rb
require ‘will_paginate/array’
“`

記述後、一旦railsを再起動する。
で使えるようになるはず。

元記事を表示

Railsチュートリアル 3章までのエラー(自分用メモ)

#Rails チュートリアル 3章までのエラーと対処法
ProgateでRuby, Rails, Git, HTML&CSS 終了後にスタートしました。
事前知識は大学の授業でC言語を少し扱ったくらい。

##~1章

###環境構築でのエラー

ProgateのRuby on Railsの環境構築の記事を見ながら進めていったとところ、rails new でフォルダが生成されず。

調べたところRails5.0以上ではNode.jsが必要なようで、インストールし解決しました。

###Herokuへのデブロイ

その後1.5までは順調に進められましたがHerokuへのデブロイでエラー。

$ git push heroku master 

$ heroku open
すると、Application errorの画面が。

heroku logsでエラーの確認をしてもよく分からず、2日ほど試行錯誤。
その後あきらめてteratailで質問を投稿したところ、Rails6でのデブロイの方法がRails5までと異なるという回答を頂きました。

そこで初めて自分がRails6を使っていること

元記事を表示

rails db:migrate でエラーが起きる時の対処法

今回は、マイグレーションをした時の対処法についてみていきます。

“`
$ rails db:migrate
— create_table(:movies)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DuplicateTable: ERROR: relation “movies” already exists
“`

このようなエラーはすでに、同じ「movies」というテーブルが存在していますよ。っていう意味なので、moviesテーブルを削除してあげてれば問題ないです。

##すべきこと
1.ターミナルで以下のように入力してあげる。

“`
$ rails db
“`

2.#が出てくるので、その横に\dと入力してあげる

“`
# \d
“`

3.テーブルがたくさん出てくるので該当のテーブルを削除してあげる。(今回は、moviesテーブルを削除する)

“`
# drop table movies;
“`

元記事を表示

プログラミング勉強

今日は基礎の二週目をスタートし、テストの復習を行う?
頑張るぞ?

元記事を表示

Rubyのキーワード引数はシンボルっぽく定義するけど、シンボルそのものではない、という話

## はじめに

拙著「[プロを目指す人のためのRuby入門](http://gihyo.jp/book/2017/978-4-7741-9397-7)(通称チェリー本)」の読者さんの中で、ときどきキーワード引数について困惑している人を見かけるので、この記事でキーワード引数に関する説明を補足しておきます。

### Ruby初心者さんの疑問:キーワード引数はシンボルじゃないの?

Ruby初心者さんの中には、キーワード引数をシンボルとして参照できないことに疑問を持つ方がおられるようです。

たとえばこんな感じです。(「[プロを目指す人のためのRuby入門](http://gihyo.jp/book/2017/978-4-7741-9397-7)」5.4.3項のコード例を一部改変)

“`ruby
def buy_burger(menu, drink: true, potato: true)
# なんで :drink じゃないの?
if drink
# …
end
# なんで :potato じゃないの?
if potato
# …
en

元記事を表示

Rubyの配列の要素をn個の配列へ順繰りに振り分け

配列や範囲オブジェクトなどに対し以下のように動作する **`Enumerable#balance`** を実装したい。ロードバランサーの[**ラウンドロビン方式**](https://ja.wikipedia.org/wiki/ラウンドロビン)みたいな感じ。

“`ruby
pp (:A..:Z).balance(7) # 均等にならない場合
#=> [[:A, :H, :O, :V],
# [:B, :I, :P, :W],
# [:C, :J, :Q, :X],
# [:D, :K, :R, :Y],
# [:E, :L, :S, :Z],
# [:F, :M, :T],
# [:G, :N, :U]]

pp (:Α..:Ω).balance(4) # 均等になる場合
#=> [[:Α, :Ε, :Ι, :Ν, :Ρ, :Φ],
# [:Β, :Ζ, :Κ, :Ξ, :Σ, :Χ],
# [:Γ, :Η, :Λ, :Ο, :Τ, :Ψ],
# [:Δ, :Θ, :Μ, :Π, :Υ, :Ω]]

pp [].balance(

元記事を表示

プログラミング初心者がRailsでサービスを作ってみる

# まえがき
プログラミング初心者がRuby on Railsで何か一つサービスを作ってみる。
※職場のエンジニアの方の協力を得つつ…

## □前提
▼プログラミングスキル

– ProgateでRilasを1周している。
– 「いきなりはじめるPHP入門」で少しだけPHPをやったことがある。

▼ステータス

– Ruby on Railsで書かれているサービスのプロダクトマネージャーをやっている。
– 開発ディレクションっぽいことをやっている(けど、コードとかに関する知識がなく、もやもやしている。)

## □目標(ゆるく)
– 自分でサービスを作ってみることで、ディレクションスキルを上げる。
– 企画〜リリースまでの手順を、実体験をもとに把握する。
– なんとなくコードが読める。工数がわかる。

## □計画(ゆるく)
– 12月からはじめて4月くらいでリリースできるといいな。
– 12月
– ドットインストール見る。
– Progateやる。
– チュートリアル見る。

## □つまずいたとこ

元記事を表示

Railsの新規プロジェクトを指定のRubyバージョンで作成する。

# はじめに
久しぶりにRailsの新しいプロジェクトを作成するに当たり、Rubyバージョンを最新のものを利用しようとしてつまずいたので、今後の自分のためにも記事として残しておく。
## 環境
・rbenvはすでにインストールされているものとする。
https://qiita.com/Alex_mht_code/items/d2db2eba17830e36a5f1
・macOS
Catalina
# 1. プロジェクトを運用するディレクトリを作成する。

“`
$ mkdir app_name
$ cd app_name
“`

# 2. Rubyのバージョンを最新にする。
現在使用しているバージョンを確認する

“`
$ rbenv versions

system
2.5.1
* 2.6.5
“`

以下のコマンドでインストール可能なバージョンリストが表示される。

“`
$ rbenv -l
“`

インストールしたいバージョンがない場合は以下のコマンドでアップデート
(2019/12/29時点では安定の最新バージョンは2.7.0)

“`
$ brew

元記事を表示

ajaxのフォローボタンが反応しないエラー(500 Internal Server Error)

# フォローできない 500 Internal Server Error

ajaxのフォローボタンが反応しない。データベースも変更がない。

consolelogのエラー内容

“`
app/models/user.rb:44
Completed 500 Internal Server Error in 32ms (ActiveRecord: 5.2ms)

ActiveRecord::RecordNotUnique (SQLite3::ConstraintException: UNIQUE constraint failed: relationships.follower_id, relationships.followed_id: INSERT INTO “relationships” (“follower_id”, “followed_id”, “created_at”, “updated_at”) VALUES (?, ?, ?, ?)):

app/models/user.rb:44:in `follow’
app/controllers/relations

元記事を表示

WSL2(ubuntu18.04)にrbenvでRuby2.3.3を入れようとしたら「The Ruby openssl extension was not compiled.」と言われた

# 起こったこと
AtCoderで原因不明のランタイムエラーが起きたので、調査のために手元のUbuntu on WSL2にrbenvでRuby2.3.3をインストールしようとしたら以下のエラーメッセージが出て、インストールが中断されてしまいました。

“`
$ rbenv install 2.3.3
Downloading ruby-2.3.3.tar.bz2…
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.bz2
Installing ruby-2.3.3…

BUILD FAILED (Ubuntu 18.04 using ruby-build 20191205-4-gf04eb99)

Inspect or clean up the working tree at /tmp/ruby-build.20191229214156.195.oPHCjW
Results logged to /tmp/ruby-build.20191229214156.195.log

Last 10 log lines:

元記事を表示

OTHERカテゴリの最新記事