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

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

プログラミング王に、、俺はなる!!!

#前回までのあらすじ
謎の赤髪の男から「このMacBookPRO16インチ(30万ベリー)をお前に預ける。。いつかきっと返しにこい。。。絶対壊すなよ?」
とノートPCをもらったNSぱんだまん。約2ヶ月間progateを学習しクソ雑魚海王類なら一撃で倒せる力を身に着けた。ここからNSぱんだまんの冒険が今始まる!!
###世はまさに!!!!大プログラミング時代!!!!

テンテンテンテンテンデッテーン♪ありったけのー言語〜使いこなーし〜
探しもの〜探〜し〜に〜ゆーくーのーさー!
###HELLO WORLD!!!!!

#というわけで今回は、、、環境構築!!!
に取り掛かっていきたい。そう思うわけですよ。でもね、初心者からしたら訳わかんないのよ。環境構築って何?って感じだよね。

まず環境構築とは。っての調べてみたんだけど。
環境構築・・・環境構築とは、特定の装置やソフトウェア、システムなどが動作するように、コンピュータや情報システムの状態を整えること。特に、コンピュータにソフトウェアを導入したり設定を調整することで、対象のソフトウェアが動作する環境を作り上げる作業を意味する場合が多い。(

元記事を表示

migrationファイルのnull: falseって?

#migrationファイルのnull: falseって?

###→指定したカラムが(データベースに)カラの状態で保存されることを防ぐ

“`
class CreateNotifications < ActiveRecord::Migration[5.2] def change create_table :notifications do |t| t.integer :visitor_id, null: false t.integer :visited_id, null: false t.string :action, default: '', null: false t.boolean :checked, default: false, null: false t.timestamps end add_index :notifications, :visitor_id add_index :notifications, :visited_id end end ``` #モデルに記

元記事を表示

railsで学ぶサーバーサイド(rails チュートリアルで学んだことをまとめてみました)

#この記事の説明
この記事ではrails チュートリアルで学んだことを私なりにまとめてみました。
理解の浅い部分がありますので、間違いがある場合はどうぞご教授ください。

#routingとcontrollerとview

rails newコマンドでアプリを作成するとroutingとcontrollerとviewが出来る。これらを使ってURLでデータを扱った処理ができる。

routingでやっている事
任意のURLに対してどのcontrollerのどの関数に飛ばすかを決める。

controllerでやっている事
controllerの中には複数の関数名があり、routingからの指示を受けてその関数名を持つHTMLファイル(view)に飛ばす。またviewの中で使う変数を定義したりする。

viewでやっている事
ここはHTMLファイルでブラウザでなにを見せるかを書いている。HTMLだけでは変数や構文を扱えないので、rubyやphpを組み込んでいる。

#####主なコマンド
rails new アプリケーション名:アプリ作成
rails controller コントローラー名

元記事を表示

FactoryBotでassociationを持つモデルをbuildするもinvalidになる

(Rails Tutorialなんかで出てくる)Relationshipモデルのrspecのテストではまった。いや、テスト以前に`FactoryBotで作ったRelationshipモデルを読み込むも、それがinvalid`だという問題から抜けきれなかった。以下順々に何が起こったのかを記録。

# 今回のRelationshipモデル

カラムは`id`, `follower_id`, `followed_id`

“`ruby:app/modles/relationship.rb

class Relationship < ApplicationRecord belongs_to :follower, class_name: 'User' belongs_to :followed, class_name: 'User' validates :follower_id, presence: true, uniqueness: { scope: [:followed_id] } validates :followed_id, presence: true end ```

元記事を表示

Railsでタブやナビゲーションをカレント表示する方法

Rails管理画面アプリのナビゲーションを作成するにあたって、
現在ページのカレント表示のやり方で簡単な方法が分かったので備忘録としてメモ。

### 例)トップページの場合

まずはトップページを例とする。
トップページへのヘルパーメソッドは`admin_path“(/admin)`とする。

“`_navbar.html.erb

“`

### 解説

`request.path`で現在のパスがわかるので、これとヘルパーメソッドを比較し、
trueだった場合はactiveのクラスを付与している。

元記事を表示

【MySQL】プログラミング初心者が今まで遭遇したエラーとその解決方法のメモ

こんばんは!スージーです!
なかなか技術ブログが書けずにモヤモヤしていたので、ちょうど良いネタがあり備忘録も兼ねて。

#MySQLに接続できないエラー

私は度々、MySQLに接続できずに四苦八苦しています。pidファイルないよーとかsocketないよーとか、その度に過去のメモや参考記事をあちこち探しているのでまとめてみようと思います。

## 参考

> – 【MySQL】pid not foundもしくはpermission deniedの対応方法
https://qiita.com/AK4747471/items/36b73edd9d1e666ae0c0
> – RailsプロジェクトでMySQLがbundle installできなかった
https://qiita.com/akito19/items/e1dc54f907987e688cc0
> – Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib (LoadError)
https://note.com/shoki_rails/n/nf7

元記事を表示

railsタグ検索機能(railsチュートリアル後の機能追加)

#はじめに
今回は前回追加した、タグ付機能を利用してタグ検索機能を追加します。
前回の記事(タグ付機能)
https://qiita.com/E6YOteYPzmFGfOD/items/bfffe8c3b31555acd51d

###作るもの
マイクロポストタグ付機能を利用したタグ検索機能。(題材は自分のポートフォリオです。)

###対象読者
railsチュートリアルに機能を追加したい等自分と同じ位のレベルの人を対象としています。

#作成の流れ
1.検索フォームの作成
2.コントローラーのアクション作成
3.動作確認

#1.検索フォームの作成
今回は検索フォームをroot_path上に設けます。(自分のポートフォリオがマイクロポストの一覧をroot_path(static_pages/home)に設けているため)

“`ruby:app/views/static_pages/home
<%= form_with url: root_path, method: :get, class: '自由に' do %>
<%= select_tag :tag_id, opti

元記事を表示

二次元配列の格納方法

こんちは!
今日はrails上で二次元配列の格納方法を記載します。

### 理由
この内容が容易に見当たらなかったため、他の方の助けになればと思います。

### 一次元配列の格納方法
イメージとしては、[1,2,3,4,5,6]
という風に格納したい場合、railsではコントローラーに以下のように記載するとできます。

“`rails:tests_contoroller.rb
def idex
@test = [] #配列の宣言

6.times do |i = 0| #6回読み込ませる、そしてiには0を格納している。iは初期化式
@test[i] = i + 1 #初期化式で宣言したiに1足した数字を各配列に代入している。
i += 1 #iに1を足してはじめに戻る。何もしないままはじめに戻ると同じ配列[0]を六回繰り返すだけだから
end
# 配列[i]になぜ1を足さないかは、配列の初期値は[0]だから
“`

### 二次元配列の格納方法
次は二次元配列です。
イメージとしては[[1,1],[2,1],[3,1]]
と格納したい場合は

元記事を表示

Progate無料版をやってみる【Ruby on Rails5 II】

[前回](https://qiita.com/GodPhwng/items/7ab78de4342649b5725e)の続きになります。

**Ruby on Rails5 II**になります。
railsの無料分は今回のレッスンまでになります。

#Ruby on Rails5 II

[公式レッスン](https://prog-8.com/rails5/study/2/1#/0)

###投稿一覧ページを作成しよう
・前レッスンと同様に

“`
rails g controller posts index
“`
posts → コントローラー
index → アクション

posts.html.erb
posts.scss
posts_controller

が自動で作成され

routes.rbに`get ‘posts/index’`が記述される。

###変数を使って表示しよう
・拡張子`.erb`は<% %>で囲むことで、サーバーサイド処理のように書ける。

変数定義、代入

“`
<% post = "test" %>
“`
変数の中身を表示

“`
<%= po

元記事を表示

Twitterログイン機能を搭載したRailsアプリを作る

Twitterログイン機能について学習するため、簡素なテストアプリを作成してみることにしたので、その一連の流れを記しておきます。

大きな流れとしては以下のようになります。

– アプリを作成する
– gem「Devise」を導入
– Twitterにアプリを登録し、key情報を取得
– gem「dotenv-rails」を導入して、セキュリティ強化
– Twitterログイン機能の実装

それでは順番に解説していきます!

##アプリを作成する

まずはrails newでアプリを作成します。

“`
$ rails new twitter-login-app
“`

作成したアプリのディレクトリへ移動します。

“`
$ cd twitter-login-app
“`

##「Devise」を追加

ログイン機能を使用するため、Deviseというgemを使用します。

“`ruby:Gemfile
gem ‘devise’
“`

“`
$ bundle install
“`

Deviseをインストールします。

“`
$ rails g devise:inst

元記事を表示

ここから始めます。目標をぶち上げる。

#はじめに
えー、どうも、圧倒的初心者。NSパンダまんです。
今回はProgateにて基本的な勉強を終了した完全未経験くそごみの私が、今年の8月か9月までに本気でモダンなイケてるナウいポートフォリオを作り、それを引っさげて渋谷のWEB系自社開発企業に内定をもらうことを目標としたサクセスストーリーブログです。
あと、学んだ言語ですが、一応、、、

学習教材が多い
短い期間でアプリケーションが作れる。(らしい。実際作ってないから知らん。)
日本人が創り上げた由緒正しき言語である(日本語での問題解決のテキストも多い)
これらの点からファーストチョイスはRubyを選択しました。
Rubyで基礎を深め、そこから他の言語も学んでいこうって寸法です。

####あと,,,もしこれをみている変わり者なあなた!!
もしあなたが現在プログラミングを学習していて私と同じようなナウい目標を掲げているのなら、、なんかコメントください。
なんでもいいんです。独学でやってるから寂しいんです。寂しがりやなんです。

ここでは私とおんなじような目標をたてて頑張っている方と共に目標に向かって頑張って行きたい。そんな願い

元記事を表示

【Ruby】Nokogiriでカクヨムの作品をダウンロード

#前置き
[**カクヨム**](https://kakuyomu.jp/)というサイトがあります。これは[小説家になろう](https://syosetu.com/)とか[ノベルアップ+](https://novelup.plus/)とか[ハーメルン](https://syosetu.org/)のような[^1]所謂「**小説投稿サイト**」の一つです。
私は今月にコミカライズが連載開始予定の名作・[**超世界転生エグゾドライブ -激闘!異世界全日本大会編-**](https://kakuyomu.jp/works/1177354054884850859)をオフライン保存して読もうと思ったのですが、カクヨムの公式は小説家になろうのように第三者向けにダウンロードの手段を用意してません。
そこで、作品ページを直接スクレイピングして保存することでダウンロードを実現したので、それに使ったプログラムをメモついでに紹介します。
#注意
– Rubyは殆ど初めて触るので、至らない点も多々あると思われます
– まずないと思いますがこのプログラムを使う場合、自己責任でお願いします。
– 保存したデータは私

元記事を表示

refileのattachment_image_tagで画像がうまく表示されない場合に

#概要
現在スクールにてRailsの学習中で、画像表示にrefileを使用しましたが、正しく記述しているはずなのに上手く表示されず少し苦労したので備忘録も兼ねて対処法をメモします。(スクールのカリキュラムには後半にちゃんと対処法が書いてありましたが、自分が読み飛ばしてしまい、対処に時間がかかってしまいました。)同じ症状の方の助けになれば幸いです。

#環境
OS: macOS Catalina バージョン10.15.3
Ruby: 2.5.7p206
Rails: 5.2.4.1
開発環境:VirtualBox + vagrant

#前提
こちらの記事にある1〜5のインストール・設定・記述は実施しました。
refileの基本的な使い方が良く纏まっていると拝見いたしましたので、引用させていただきます。
[refileの基本と複数画像のアップロード](https://qiita.com/nekosuke_/items/501e7ba1b286c51c1be9)

ちなみにgemのバージョンは
refile 0.6.2
refile-mini_magick 0.2.0
です。

#症状

元記事を表示

SpecTest – ビヘイビア駆動開発(BDD)用テスティング・フレームワーク

# はじめに

[この記事](https://qiita.com/Kray-G/items/30db83922268929e8cd0) の続き。**SpecTest** の内容を少し紹介。まだすぐに使える形ではないですが、要望があれば何とかしたい。…無いか?

気にせずに進みます。こういうのは勢いと思い一気に書いてみました。

ビヘイビア駆動開発では、振る舞いに対するテストを書くことによって動作仕様を明確にしていく。いわゆる **Tests as Documentation**、**Specification by Example** というもの。

しかし既存の BDD フレームワークは「テストを書く=それがドキュメント」という図式は成り立つものの、ユーザー向けの説明文書になるかというと、決してそうはなっていない、という問題がある、と私は思う、ような気がする。TDD から派生して、あくまで仕様を理解できる、という点にフォーカスしたモノ。

そこで **SpecTest** だ。

* [SpecTest](https://github.com/Kray-G/SpecTest)

元記事を表示

部分テンプレートとは?

## 部分テンプレートってなんなの??
部分テンプレートとは・・・
`複数のビューファイルの中で使われている部分を一つのビューファイルとして管理すること。`

つまりどういうことかというと複数回使うビューをテンプレート化してしまうことで冗長な記述が必要なくなるというとっても便利かつ簡単なテクニックです。

## 部分テンプレートを作成する

部分テンプレートのビューを作成するときの注意点としてビューファイルのファイル名の先頭の部分に`_ (アンダーバー)`をつける必要があります。
例えば、呼び出したい部分テンプレートファイルが`header.html.erb`だとすると、
`_header.html.erb`と書き換えましょう。

## 部分テンプレートの呼び出し方

当たり前ですが、実際に部分テンプレートを呼び出すためのメソッドがあります。それが
`renderメソッド` です.

“`ruby:_header.html.erb

render ‘ファイル名’ #’ファイル名’で部分テンプレートの呼び出し

render partial: ‘ファイル名’ #partialはつけ

元記事を表示

RubyとPythonにおける、外部ソースコードを読み込む書き方の違い

# これは何?

RubyとPythonの両方でプログラムを書いていると、外部ソースコードを読み込む書き方が「どっちがどっちだっけ?」と混乱することがあります。そうした場合に向けての備忘録です。

# Rubyの場合

“`ruby:
require ‘./foobar’
“`

* モジュール名を含むパス全体を`require`の後に書く
* モジュール名を引用符で囲う必要がある

# Pythonの場合

“`python:
from . import foobar
“`

* パス指定でモジュールをインポートする場合、モジュール名を除くパスを、`from`の後・`import`の前に書く
* モジュール名は`import`の後に書く
* モジュール名を引用符で囲う必要はない

Pythonの場合、「パッケージ」やらなんやらの関連概念があるが、今回はそうした項目には触れない。

元記事を表示

1行追加のみ! Net::HTTPで発生するcertificate verify failedを回避

# 外部APIを叩くのに、Docker使っていたらエラーが発生

`SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain)`

原因を調べるのに疲れた。
ローカル環境のみで発生するので真面目に対応するのも面倒。
本番はDocker使ってないし。
楽できる方法、探した。

## 解決策1

config/initailizersのファイルに以下を追記する。

“`
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE if Rails.env.development?
“`
参照:[Rails5 devise twitterソーシャルログイン ローカル環境でのエラー解消](https://qiita.com/r_ishimori/items/c82a27ed2448dfae14a2)

ただ、これだと、
・サーバー再起動が必要
・ローカル環境のログで`

元記事を表示

VSCodeにおいて、インストール済みのlive shareができない場合の対処法(MAC)

先生から送られてきた、liveshareのリンクを踏んでも、collaboration することができませんでした、、

####解決策の結論として「GitHub で再認証を行うこと」が必要でした。

VSCodeをメニューバーから強制終了し、再起動を行なった場合は、再度Githubの認証を得る必要があり、以下に手順を示します。


1.VSCodeの下にある、紫色のliveshareと書いてあるバーをクリックする

2.sign in with githubと表示されるのでそれをクリック

3.safariが開き、表示された認証ボタンを押すことで、認証が完了し、liveshareが使える様になる

下のバーに自分のユーザー名が表示されていれば成功です。

元記事を表示

外部キー制約のついたカラムを削除したい

外部キー制約の付いたカラムを削除するのにプチハマりしたのでまとめます

## 参考

こちらの記事でマイグレーションについてかなり詳しくまとめられています
マイグレーションの操作をするときは、こちらの記事で該当箇所をざっと読んでから公式ドキュメントに目を通すのが良さそう
https://pikawaka.com/rails/migration

APIdoc
https://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/remove_index

## 例)ベストアンサー機能

– questionモデル内に、ベストアンサーに選ばれた回答を保存するためのbestカラムがある
– bestカラムには外部キーが設定してある(answersテーブル)

という状況

“`ruby:db/schema.rb
create_table “questions”, force: :cascade, options: “ENGINE=InnoDB DEFAULT CHARSET=utf8” do |t|
t.

元記事を表示

[Rails] Mechanizeがファイルディスクリプタを大量に消費してしまう

内容はタイトル通り。
Railsにて、Mysql2のConnectionError出てる場合とか
ファイルディスクリプタを異常に使いまくってる場合はもしかしたら関係あるかも。

### 経緯
お客様に提供しているサービス(Rails,puma)にて

“`
Mysql2::Error::ConnectionError
“`

が多発してサービスが利用できなくなる障害が発生しました。

詳しくログを追ってみると他にも

“`
Errno::EMFILE (Too many open files @ rb_sysopen …(略)
“`

のようなエラーも発生している様子。

さらに、、、

“`
# ファイルディスクリプタ上限確認
ulimit -n
# pumaプロセスのファイルディスクリプタ確認
for i in $(ps aux | grep “[p]uma” | awk ‘{print $2}’); do sudo ls /proc/$i/fd | wc -l; done
“`
上記コマンドでプロセスの開いてるファイル数を確認してみたら
どうやらファイルディスクリ

元記事を表示

OTHERカテゴリの最新記事