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

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

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

###テーマ「データベース 頭文字は大文字か小文字か」
この投稿は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の前を大文字

元記事を表示

【Rails】mechanizeを使えばrailsスクレイピングが余裕な件

スクレイピングに初挑戦したとき、検索上位にあがるサイトはどれもnokogiriを使用するのですが、dockerだとうまく利用できず四苦八苦していました。

その中で見つけたのが**mechanize**というgemです。

自分用メモのためにも今回はコードを書いときたいと思います。

#前提
railsアプリは作成済み
gem mechanize インストール済み

#Controller
controllerでは.getメソッドとsearchメソッドを使ってページ情報を取得します。

“`
def home

agent = Mechanize.new

page = agent.get(“https://nemlog.nem.social/”)

@elements= page.search(‘.visit-w’)

end
“`

あとはインスタンス変数@elementsを利用してviewに表示するだけです。

#View
“`
<%@elements.each do|element|%>

元記事を表示

【RuboCop】複数行の引数の最後の値にカンマを付けたい

# 複数行の配列や引数を書くとき
### 最後にカンマを付けない派
“`seeds.rb
User.create!(
name: ‘foo bar’,
email: ‘foo@baa.com’,
password: ‘password’,
password_confirmation: ‘password’
)
“`
`rubocop -a`で自動整形すると、デフォルトでは上記のように整形されます。
ruby以外の言語だと、引数や配列の最後にはカンマを付けるとエラーになったりするので、一般的に使われている書き方だと思います。
### 最後にカンマを付ける派
“`seeds.rb
User.create!(
name: ‘foo bar’,
email: ‘foo@baa.com’,
password: ‘password’,
password_confirmation: ‘password’,
)
“`
分かりづらいですが、先程の例と比べると、最後の引数の後にカンマが付いているのが分かります。
rubyでは上記のように最後の引数にカンマを付けても問

元記事を表示

[Ruby]Dateクラスで日付を扱う

# RubyのDateクラスについて

– RubyのDateクラスを使用することで『日付』を扱うことができます。

“`ruby

# Dateクラスを読み込む
require “date”

# Date.newの引数に年月日を渡して、変数dayに格納
day = Date.new(2020,2,22)

# dayの出力結果は「2020-02-22」となる
puts day

# 「sunday?」メソッドは日付が日曜日かどうか真偽値を返す
puts day.sunday?

“`

Dateクラスの便利な使い方やメソッドについて、また随時更新していきたいと思います!
ご覧いただきありがとうございました!

元記事を表示

Railsで部分テンプレートを使用時、Missing テンプレートエラーが出た際、解決したこと

#Missing partial shared/_header with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:っというエラーが発生した際、どう解決したのか

erbファイルに部分テンプレートを書く際は、基本 <%= render 'ファイル名' %> でよかったはず・・・・
以下参照(ピカワカさんありがとうございます)
https://pikawaka.com/rails/partial_template

スクリーンショット 2020-02-07 21.09.21.png

以上のような

元記事を表示

opensslのせいでrails s, bundle installなどできない rbenv 2.3.3

OS:macOS Sierra 10.12.6

plant UMLをbrew経由で入れた際に`brew update`が走り、それによってopensslのversionが上がり、railsコマンドなどが使えなくなった。
`opensslの1.1系`が`rubyの2.4以下?`では使えないらしく、opensslを1.0系にdowngradeする必要があった。

####まず、現在のversionのopensslをuninstall

“`
mac:~ qiita$ brew uninstall –ignore-dependencies openssl
“`
`–force`だと依存関係が残っているからできない的なエラーが出るため、`–ignore-dependencies`を使用

####1.02tのversionをinstall

“`
mac:~ qiita$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/64555220bfbf4a25598523c2e4d3a23

元記事を表示

人の感情を可視化するアプリを作りました【キドアイラク】

# はじめに
皆さん初めまして!
本記事は私がrailsで作った初めてのアプリである「キドアイラク」の紹介記事になっています。
![スクリーンショット 2020-02-07 16.08.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240465/e76eb2ff-6473-1758-6db4-bfae829fbe5f.png)

https://kidoairaku2019.herokuapp.com

この「キドアイラク」がどのようなアプリかというと、タイトル通り「人の感情を可視化する」アプリです。
自分がここ数日どんな感情で過ごしていたのか、他の人はどんな時にどんな感情を抱くのかを一目で確認することができます。
街中を歩く一人一人の感情が透けて見えるイメージです。
本サービスを作った背景や機能は後ほど詳しく語りたいと思いますので、もし興味がある方は読んで頂けると幸いです。

そして、僅か一ヶ月ほどで作ったのでショボい作りにはなっていますが、是非一度使っていただけると嬉しいです。
# 作った理由

元記事を表示

【実体験をもとに】30歳未経験から独学4ヶ月でバックエンドエンジニアとしてWeb系自社開発企業へ転職するまでのロードマップ

こんにちは。

2020年2月現在、スタートアップ期のWeb系自社開発企業から内定をいただきました。
今回はこれからプログラマーとしてWeb企業へ転職される方を応援するため、私が知識ゼロの状態から学習をスタートし転職するまでの過程を踏まえたロードマップを共有します。
一つの例として参考にしていただければと幸いです。

#前置き
本記事はプログラミング初心者を対象にしたものなので、理解しやすいように噛み砕いて文章を作成しています。
多少語弊のある内容もあるため現役プログラマーの方の閲覧時は生暖かい目で見てください(笑)

私の実体験をもとに作成していたため、実際にはもっと素晴らしいロードマップもあると思います。

#投稿者スペック
エンジニアキャリア1ヶ月目のできたてホヤホヤ新人
年齢:30歳(既婚)
住所:埼玉県
前職:一般企業の拠点マネジメント系
学歴:大卒(文系)
・プログラミングの知識はゼロ(多少Excelを触れるくらい)
・わりとコミュ力はあるほう

#転職先での待遇
給料(年収):400万ほど(前職と同程度)
社会保険などの福利厚生
リモートワーク可

#学習開始から転職ま

元記事を表示

Railsでja.ymlが反映されない

railsにてja.ymlに追記をしたが反映されなかった

“`ruby:ja.yml
#変更前(反映されなかったもの)
ja:
activerecord:
attributes:
 board:
name: 名前
title: タイトル
body: 本文

#変更後
ja:
activerecord:
attributes:
board:
name: 名前
title: タイトル
body: 本文
“`

boardのインデントが問題で反映されなかったよう。
直したら反映された。

元記事を表示

【備忘録】can’t find gem bundler(Gem::GemNotFoundException)というエラーの解決法

# 何をしようとしていた時に起きたエラーなのか
git cloneで他の人が作ったアプリをローカル環境に移し、bundle installする時に以下のエラーが起きた。

“`terminal

can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
“`

「実行できるbundlerが見つかりません」というエラーである。

# やってみたこと

とりあえず、bundlerもgemなので ‘gem list’コマンドを実行して確認してみる。

“`terminal

$ gem list
“`
すると、

“`
bundler (2.1.4)
“`
自分のローカル環境でbundler発見。

次に、外からcloneしたアプリのGemfile.lockを確認してみる。

“`
BUNDLED WITH
2.0.2
“`
あれ、バージョンが一致してないぞ?

# 原因

今回のエラーの原因は、自分がローカルで使用するbundlerと他の人のGithubからc

元記事を表示

中規模以上レガシーRailsシステムのリファクタリング方針

# 前置き
ここ一年、現職において0→1フェーズからすくすく育ってきたRailsプロジェクトのバックエンド全般を任されており、リファクタリング方針において、ある程度いい感触を掴みつつあるので、その知見を共有してみようってことで書いてみました。

# 現状
– 一連のビジネス要求に対する判断や分岐、データアクセスといったドメインロジックが、controllerや、方々のmodelに跨って定義されていることによるドメインロジックの見通しの悪さ
– データアクセスと判断や分岐といった処理がmodelに一緒くたに実装されているため、テストコードの実装が難解である
– テストコードの実装が難解であるため、テストの実装を諦め、人力動作確認でリリースまで進めるが、高確率で予期せぬデグレが発生する
– リリース後にデグレ対応に追われるため、スムーズに次の開発へと移行できない

**どうしよう**
![dousiyou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247146/8f20f3c0-4dc5-60b7-66

元記事を表示

Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]

# Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]
上記のエラーに引っ掛かったので記事にしました。
### 環境
macOS Catalina 10.15.3

## Rubyのversionを変えたくても変えられない。
スクリーンショット 2020-02-06 23.09.29.png

### rbenvの導入
[ここ](https://qiita.com/Alex_mht_code/items/d2db2eba17830e36a5f1)を参考にして、[rbenv](https://github.com/rbenv/rbenv)というRubyのversion管理ツールを導入した。

“`terminal
$ br

元記事を表示

クラスメソッド、インスタンスメソッド。いつ使うのか。

まだエンジニアとして働く前、ちょうどRubyの勉強を始めた時に書いた[「メソッドとクラスメソッドとインスタンスメソッドが曖昧だった」](https://qiita.com/right1121/items/c74d350bab32113d4f3d)という記事があります。
この記事ですが、すでに1年半ほどが経過しているにも関わらず現在もいいねが押されており、初学者の助けになっているのであれば嬉しい限りです。
しかし、読み返してみるとこの記事は**概念を説明しているだけで実際にどのように使えばよいのか**は記述されておらず、腑に落ちないところがあるのかなと思いました。
そこで、今回はできる限り実例を交えて解説していきたいと思います。

## いきなりですが、あなたは校長先生になります。

あなたにはいまから校長先生になっていただきます。生徒が入学してくるため、入学した生徒の管理を**Ruby**で行ってください。

### クラスを作る

まずはクラスを作成しましょう。クラス名は1年1組で、担当教師は山中先生です。

“`ruby:最初は最低限の機能
class Class
def i

元記事を表示

【Ruby】scanとmatchの違い

#scanとmatchの違いってなんなんだろう
Rubyの入門書のコード例を実行する中で、ある文字列から正規表現にマッチした文字列を取得する方法としてscanとmatchというメソッドを学びました。
両者は同じようにある文字列から正規表現にマッチする文字列返すというメソッドですが、入門書の中でもこの二つのメソッドは度々登場しているのですが、どのように使い分けたらよいのかわからなくなってしまいました。そこで、今回はscanとmatchの違いをまとめてみました。

※この記事ではMacにインストールされたRuby 2.6.3を使用しています。
実行環境はRubyファイルをターミナルで実行しています。

#実際にscanとmatchを実行してみる
##matchメソッドを実行してみる

実際に、”123-4567-89″という文字列から数字だけを正規表現を用いてmatchメソッドで取得してみます。

“`ruby
p ‘123-4567-89’.match(/(\d+)-(\d+)-(\d+)/)
#=> #

元記事を表示

【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】railsブログサイトの練習で躓いたところメモ

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

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

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

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

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

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

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

【https://qiita.com/Hal

元記事を表示

Ruby、PHP、Java、JSでの書き方の違い

##はじめに
「Rubyでプログラミングの基礎を学んだから、次はjsやってみようかな!」

「書き方ごちゃごちゃになって、何が何だかよくわかんねー!!」

こんな人もいるのでは?

僕自身も以前、詰め込みすぎでパンパンになりましたので、書き方の違いをわかりやすくまとめてみました。
一つ一つ覚える必要はありませんので、この記事を、ストックしていただければと思います。
オブジェクト指向の理解も多少深まると思いますので、最後までご覧ください!

## 文字出力
基本となる文字の出力。言語によって処理のされ方が違うので難しいところですが、基本なのでしっかり押さえましょう。Javaはやっぱり記述が長いですねw

“`ruby:
#Ruby
puts “こんにちは”
“`
“`php:
#PHP
echo “こんにちは”;
“`
“`java
//Java
System.out.println(“こんにちは”);
“`
“`javascript
//JavaScript
console.log(“こんにちは”);
“`

## 変数代入

元記事を表示

初学者によるプログラミングMemo #22 素因数分解

#はじめに
今回は素因数分解のお話です
最近問題を解くことが多くなって、アルゴリズム関係に面白みを見出しています
Rails関係なくても書いている下記はすでに決まり文句ともなりました
なお、本記述はMacにおいて、Railsでの開発を前提としています
また、まだまだひよっこですので、不備等ございましたらご指摘いただけると幸いです→よく間違えますが、生暖かく見守ってくださると幸いです

#目次
– 素因数分解とは
– 問題を解いてみる

##素因数分解とは
素因数分解とは、ある正の整数を[素数](https://qiita.com/Ikuy_h/items/9a066958eb67728ca0e4)の積で表すことです
なんのこっちゃですかね?
具体的に見てみましょう
例えば「30」を素因数分解してみましょう

“`.rb
30 = 10 * 3
10 = 5 * 2
# ↑を合わせるとこう(↓)なる
30 = 2 * 3 * 5
“`

2,3,5はいづれも[素数](https://qiita.com/Ikuy_h/items/9a066958eb67728ca0e4)ですね
この

元記事を表示

正規表現でTwitterURLからユーザー名とstatusを取得する【Ruby】

#TwitterのURLについて

これがツイートのURLの例
`https://twitter.com/yurinolog/status/1209290280328814593?s=20`

httpsから始まり3つ目のyurinologが**ユーザー名**、5つ目の数字の羅列が**status**と呼ばれる各ツイートに割り振られる番号。(語尾のs=20の正体はいまだに分からない。知ってる方いらしたら教えて頂きたいです)

#書いたコードと結果

“`ruby
url = “https://twitter.com/yurinolog/status/1209290280328814593?s=20”

/(https|http):\/\/(twitter.com)\/([A-Za-z0-9_]*)\/(status|statues)\/(\d+)/.match(url)

puts $1 #=> http or https
puts $2 #=> twitter.com
puts $3 #=> user
puts $4 #=> status or statuses
puts $5 #

元記事を表示

rails new からrails serverまでの流れ

この記事は`rails new`したい時に色々忘れていたりするので**自分用のメモです**。
都度更新していくかもしれません。
# rails newまで
gemはvendor/bundleで管理したい

– フォルダ作成からAtomへ移動まで

“`
~
❯ cd MyApp

~/MyApp
❯ mkdir portfolio

~/MyApp
❯ cd portfolio

~/MyApp/portfolio
❯ bundle init
Writing new Gemfile to /Users/kn428/MyApp/portfolio/Gemfile

~/MyApp/portfolio
❯ atom .
“`
– rails5.2の環境にしたかったので、Gemfileの`gem “rails”`のコメントアウトを外し、`gem ‘rails’, ‘~> 5.2.1’`とする
– bundler経由でrailsをインストールする

“`
~/MyApp/portfolio
❯ bundle install –path vendor/bundle –jobs=4

元記事を表示

OTHERカテゴリの最新記事