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

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

どこのページからでもリンクさせたい時

# はじめに
この記事が、初めての投稿なので見にくかったらすみません。。
自分の備忘録も兼ねて、学んだことを書いていきます!

# トップページからしか、リンク出来ない!!
フリマアプリの作成中のことです。

ヘッダーに、新規登録ボタンを置いていました。
トップページでボタンを押すと、新規登録ページへ遷移できます。
ですが、商品検索ページや商品詳細ページからは、ボタンを押してもエラーになってしまいました!!![image.png]
(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581782/3ba04bce-f720-4a5f-991d-2c734b9b9910.png)

# 絶対パスを相対パスに変更
結論から言うと、絶対パスを相対パスに変えたら解決しました。

絶対パス↓

“`ruby:header.html.haml
%li.listsRight__item.listsRight__item–new
= link_to “新規登録”, “users/sign_up”
“`

相対パス↓

元記事を表示

Dockerを学習するための記事一覧

# Dockerを学習するための記事をまとめてみました
エラーの対策も記述してます。

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
ERROR: Service ‘web’ failed to build: The command ‘/bin/sh -c bundle install’ returned a non-zero code: 6

## 参考になる記事一覧
今回の動画ではインストール完了済みなので、この記事は飛ばしています。
[DockerをMacにインストールする(更新: 2019/7/13)](https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81)

今回実施する記事は下記になります。
[DockerでRailsの環境構築](https://qiita.com/minuro/items/1fe38

元記事を表示

[HowTo]マッチングアプリ的な友達機能を実装してみる。

現在、個人アプリを作成しているのですが、その中の機能として「友達機能」を実装することにしました。
スクールではカリキュラムになかった内容であったため、自身で色々と調べて実装したので、備忘録として、
以下のように記事にさせていただきます。
皆様の実装に少しでも役立てていただければ、幸いです。

#はじめに-機能に対する考え方
今回の「友達機能」実装にあたり、当初、「友達申請=>承認=>友達になる」というよくある流れでの実装を考えてました。
しかしながら、少し堅苦しい感じがしたので、もう少し気軽に友達申請を実現するために、最近流行っているマッチングアプリ的に「いいね」を友達申請の代わりに使用し、お互いに「いいね」されたら「友達」にするというやり方での実装を考えました。
以降、その考えをベースに実装をしております。

#実装イメージ
今回の機能の実装イメージは以下となります。

##友達申請(いいね)の動作イメージ
友達申請(いいね)以下のようにハートマークをクリックすると完了します。
この動作をお互いに行うことで”友達”として認定します。

![demo](https://gyazo.co

元記事を表示

yieldとproc

yieldとproc

今まで何度もブロックを使ってきた
しかし、今まで使ってきたのは既存のメソッド(each,mapなど)

自分でもブロックで使うメソッドは定義できるのか?

【結論】できる

ここからはブロックを利用するメソッドの定義、処理を引数や変数として渡す方法をまとめる

各エフェクトにcallというメソッドを実装する

yield→ブロックを利用するメソッドの定義をする

渡されたブロックを実行するためにメソッドないでyieldを使う

“`ruby
def greeting
puts ‘おはよう’
yield
puts ‘こんばんは’
end

greeting do
puts ‘こんにちは’
end
“`
“`
=> おはよう
こんにちは
こんばんは
“`

yieldは引数をブロックに渡したり、戻り値を受け取って出力もできる

ブロックを明示的にメソッドの引数として受け取るには?
→引数名の前に&をつける

ブロックの引数はメソッド定義につき一つしか指定できない
また、他の引数がある場合はブロックの引数を必ず最後に指定する

元記事を表示

ツイッター風Railsアプリをデプロイする(前編:unicornのみで取り急ぎ繋げよう)

# この記事の基本的な方針
この記事は、[過去記事](https://qiita.com/annaPanda8170/items/844684cb739f99d3f114)で作ったアプリをEC2でデプロイします。
手を動かしながら読みたいようでしたら、以下でこのアプリを手に入れてください。

“`bash:Terminal
$ git clone https://github.com/annaPanda8170/cheaptweet.git
$ bundle install
$ bundle exec rake db:create
$ bundle exec rake db:migrate
“`
これ自体の作り方は、[こちら](https://qiita.com/annaPanda8170/items/844684cb739f99d3f114)。
Rails5.2.4.2_でのみ動作確認しています。
基本解説はしません。手順のみ示します。
# 想定する読み手
既に一度Railsアプリをチュートリアルやスクール等で作りデプロイしたこのある方を想定しています。
Mac使用で、パソコンの

元記事を表示

Kinx 実現技術 – Garbage Collection

# Garbage Collection

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。作ったものの紹介だけではなく実現のために使った技術を紹介していくのも貢献。その道の人には当たり前でも、そうでない人にも興味をもって貰えるかもしれない。

前回のテーマは [JIT](https://qiita.com/Kray-G/items/66257e4cca0ad6dd7636)。今回のテーマは Garbage Collection。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github

元記事を表示

1行で素数列挙

# はじめに
ふと思いつきで1行で素数を求めるプログラムを書いてみました。効率ではなくコード量重視。

# Ruby

`filter` かと思ったら Range の場合 `select` なんですね。(Ruby 2.5)

“`ruby
(2..99).select {|x| (2…x).select {|i| x % i == 0} == []}
“`

# Python

`filter` でもいいけれどリスト内包表記の方がすっきり書けます。

“`python
[x for x in range(2, 100) if [i for i in range(2, x) if x % i == 0] == []]
“`

# Haskell

Haskell は何年たっても勉強中の初心者から抜け出せません。

“`haskell
[x | x <- [2..100], [i | i <- [2..(x - 1)], mod x i == 0] == []] ``` # まとめ リスト内包表記ができないRubyが不利かと思ったら、意外なことにぼくが書いた中では一番短かっ

元記事を表示

【Ruby】getsメソッドの入力値は改行付きの文字列である

# 背景
某転職テストのスキルチェックを受けた結果がボロボロで悔しくなり、某スキルチェックサイトで毎日コーディングして訓練しようと思い始めた所、あまりにも単純な問題で詰まり悲しみに包まれかけたのでアウトプットします。

また、Railsエンジニア志望なのでRubyのコードを書いていきます。

どことは書いてはないですがスキルチェックの内容は外部流出厳禁なので、一応似たような形に書き換えてます。

# getsメソッド
### getsメソッドはユーザーがキーボードで入力した値を文字列として取得するメソッド。
という説明自体は間違っていないのですが、

“`ruby:sample.rb
# 入力した値が”Hello”だった場合、”World”を出力しましょう。
input = gets #Helloを入力する
if input == “Hello”
puts “World”
else
puts “Helloではありません”
end
> “Helloではありません”
“`

のように、間違いなくHelloを入力しているのにfalseが返ってくるんですね。えぇー!?って思いますや

元記事を表示

関連する質問を表示したい(Q&Aサイト)

現在ポートフォリオとして大学受験をテーマにしたQ&Aサイトを作成しています

関連する質問を表示する機能の実装に手間取ったので、自分用にまとめ。

## 何をもって関連とするか

質問同士を関連づけるための基準が必要ですが、今回は質問にカテゴリーを紐付け、同じカテゴリーに属するものを関連する質問とします

## モデル

“`ruby:models/question.rb

has_many :category_relationships
has_many :categories, through: :category_relationships, source: :category
“`

“`ruby:models/category_relationship.rb

belongs_to :question
belongs_to :category
“`

“`ruby:models/category.rb
has_many :category_relationships
has_many :questions, through: :category_re

元記事を表示

【爆速成長!】プログラミング駆け出し〜オリジナルポートフォリオ作成までに参考にしたサイト一覧

# はじめに
完全未経験の30歳文系が、プログラマー転職に向けて活動してきました。
2019年8月に初めてProgateでプログラミングに触れてから、約5ヶ月。
2020年3月現在、オリジナルポートフォリオの完成まで至りました。

最初の頃は右も左もホンッットに何も分からない状態でした。
その当時を思い返すと、少しは成長したのかなーって思います。

分からないことは即調べて、有益に感じたサイトやQiitaの記事は全てお気に入りに入れていました。

そこで、これまで参考にさせて頂いたサイトを一つにまとめてみます。
※カテゴリー別にまとめてみました

# 参考になったサイト

## 学習方法・概念・その他有益なもの

未経験者には全てが黒魔術に見える呪いがある
https://qiita.com/mackey0022/items/73f77873facc22e22c8c

不思議の国のSE用語
https://qiita.com/t_nakayama0714/items/478a8ed3a9ae143ad854

質問は恥ではないし役に立つ
https://qiita.com/seki

元記事を表示

Rails6 のちょい足しな新機能を試す 125(endless range bug fix編)

# はじめに

Rails 6 に追加された新機能を試す第125段。 今回は、`endless range bug fix` 編です。
Rails 6.0.0 では、 `(1..)` などのエンドレスな Range で `include?` メソッドを呼ぶと `RangeError` が発生するバグがありました。

Rails 6.0.1 以降では修正されています。

Ruby 2.6.5, Rails 6.0.1, Rails 6.0.0 で確認しました。

“`shell
$ rails –version
Rails 6.0.1
“`

今回は、 `rails new` して、 `app` ディレクトリの下にファイルを作って確認してみます。

# Rails プロジェクトを作る

Rails プロジェクトを新たに作成します。

“`shell
$ rails new rails_sandbox
$ cd rails_sandbox
“`

# スクリプトを作成する

`Range#include?` を実行するスクリプトを作成します。

“`ruby:scripts/e

元記事を表示

チーム開発 (決済ライブラリpayjpインストールエラー対処)

gem ‘payjp’
bundle installできなかったが、macOSをアップデートしたらbundle installできるようになった。

rails sできなくなったエラー文
Could not find a JavaScript runtime.
See https://github.com/rails/execjs for a list of available runtimes.
参考サイト MacにNode.jsをインストールで解決
https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09

セレクトタグ
https://qiita.com/ozackiee/items/3c027d07cdeb61df6029

元記事を表示

GitHub PagesとJekyllを使ってポートフォリオページを作ろう②Jekyll構築編

前回
[GitHub PagesとJekyllを使ってポートフォリオページを作ろう①GitHub Pages構築編](https://qiita.com/H_Ny/items/07f6594ce33c1c547888)

今回はJekyllの環境構築編です。

参考にしている良記事様
– [GitHubPages + Jekyll 無料でWebページを作ってみた](https://qiita.com/koyo-miyamura/items/5ec89ac9689be49a55f6)
– [jekyllインストール](https://dev-yakuza.github.io/jekyll/installation/)

# Jekyllって?
**Webサイトを構成するHTMLファイル一式を出力する**ツールです。
特徴としては
・Rubyベースで動作する
・テーマを簡単に取得できる
・**MarkDownで書ける**
・**GitHubPagesが公式サポート**
といった感じです。MarkDownで書いたものをHTML出力してくれるみたいです。便利ですね。

# Jekylの環境構

元記事を表示

Rails開発におけるRSpecの使用方法と基礎的な理解 〜その1〜

## はじめに
当記事は以下のような方の参考になるかと思います。

– Ruby on Rails初学者
– テストについて学びたい方
– テストについて一次情報を確認したが、あまり理解できなかった方
– RSpecの基礎について学びたい方
– RSpecを簡潔に書きたい方

## 執筆の理由
私はプログラミングの学習にスクールを利用しましたが、テストは他の項目と比較して理解が進んでいない方が多いような印象でした。(私を含め)
その為、自身の理解が進んだ際には、記事を投稿する事でアウトプットでより理解を深めると共に、初学者の方々の理解の助けになれればと考えていました。
これが記事投稿の理由です。

ちなみに、自身がテストについて理解が進んでいなかった理由としては、以下の3点が挙げられます。

– テストを軽視していた。
– カリキュラム全体を確認した結果、進捗に直接の影響を与えないと考えた。
– その性質上、DRY(Don’t Repeat Yourself「何度も同じ事を記述せず、効率的にコーディングする」の意)にすることがやや制限される為、面倒に感じた。

数ヶ月前の理解が進んでい

元記事を表示

accepts_nested_attributes_forを理解する

Railsの`accepts_nested_attributes_for`というヘルパーについて、日本語で分かりやすい記事がなかなか見つからないのでアウトプットしておきます。
特に関係は無いですが、viewファイルはhamlで記載していきます。

## 環境
ruby 2.6.5
Rails 5.2.4.2

## 概要
そもそも**accepts_nested_attributes_for**とは何なのか?
[Rail APIガイド](https://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html)
一番上の解説をそのまま翻訳してみます。
>入れ子になった属性を使用すると、親を介して関連するレコードに属性を保存することができます。デフォルトでは、入れ子になった属性の更新はオフになっており、accept_nested_attributes_forクラス・メソッドを使用して有効にすることができます。入れ子になった属性を有効にすると、モデル上に属性ライターが定義されます。
>
>属性ライ

元記事を表示

Ruby単体でDB接続したいとき(MySQL)

# はじめに

RubyでDBに接続したい時があるかと思います。

例えばスクレイピングしてきた情報をDBに格納したい時など。

ActiveRecordを使うと実装できます。

ActiveRecordはRailsに搭載されているので、皆さんご存知かとは思いますが、

ACtiveRecordを単体で使ったことがない方は結構いらっしゃるかと思いますので、ご紹介します。

今回はMySQLを使います。

# ActiveRecordを単体で使ってみる

##準備

まずはDBを用意しましょう。MySQLにログインします。

~~~
mysql -u root
~~~

データベースを作ります。名前は今回sampleにします。

~~~
mysql> create database sample;
~~~

sampleデータベースに入ります。

~~~
mysql> use sample;
~~~

テーブルを作ります。名前は今回usersにします。Rubyの規約上、テーブル名は複数形にしてください(sをつける)

~~~
mysql> create table product (i

元記事を表示

Gmail api を ServiceAccount ( G Suite 管理下の ) で行うのは大変

## 目的
– Gmail API でのメール送信
– G suite 管理下のドメイン配下からの送信
– ユーザーのトークンでは無くて ServiceAccount 経由

## 必要な事
– サービスアカウントの詳細で、「G suite ドメイン全体の委任を有功にする」
– G suite管理画面より、Api scopes を設定する( 不明瞭な点あり

## Api scopes
“`
http://www.google.com/m8/feeds/contacts/,http://www.google.com/m8/feeds/groups/,https://mail.google.com/
“`
( なんでか判らないけど、mail.google.com スコープだけだと権限エラーになってしまうので、この三つのスコープが必須

## sample code ( ruby
“`rb
# frozen_string_literal: true

class GmailDeliveryMethod
attr_reader :settings

def initialize

元記事を表示

読みやすいコードを書く

#読みやすいコードとは
読みやすいコードが書けずに困っているため、現段階で学んだことなどを書いていきたい。

##客観的にコードを読む
コードは自分だけがわかれば良いものではない。全く関係のない人が見ても理解に時間のかからないコードを書く必要がある。
そのためには自分の頭をリセットして客観的に自分のコードを読む

##わかりやすい変数名、メソッド名を書く
ここに一番苦戦している。ボキャブラリーが少ないせいか、わかりやすい名前をつけることができない。
そのため、ここに汎用的に使えそうな変数名などをメモしていきたいと思う。

###範囲の指定
firstとlast
限界値を明確にするには
minとmaxを使う

###何かを出力するメソッド
output ~

元記事を表示

Railsチュートリアル〜5章〜ふざけてる時間ないので真面目に勉強する

#レイアウトを作成する。
5章目に入っていきます。4章はRailsっていうよりもRubyの基本的な文法や考え方についてやっていましたが今回からは具体的にsample_appのレイアウトを整えていく手法を勉強していきます。

##ナビゲーション
まずサンプルアプリケーションにリンクとスタイルを追加しないといけない。
新たにapplication.html.erbにHTML構造を追加する。

“`



<%= full_title(yield(:title)) %>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application',

元記事を表示

国会会議録検索システム 検索APIをRubyで使う

国会の会議の議事録を検索するAPIがある。昔は使い勝手が悪かったようだが、今アクセスしてみたところ、以前指摘を受けていた点は修正されていて、使いやすくなっている。

## 会議単位簡易出力の例

会議の一覧が返ってくる。

“`
require ‘open-uri’
require ‘json’

def to_query(hash)
hash.map { |k, v| “#{k}=#{v}” }.join(‘&’)
end

params = {
from: ‘2020-01-20’,
until: ‘2020-01-20’,
maximumRecords: 5,
startRecord: 1,
recordPacking: ‘json’
}

endpoint = ‘https://kokkai.ndl.go.jp/api/meeting_list?’
meetings = []
start = 1

10.times do |loop|
params[‘startRecord’] = start
url = endpoint

元記事を表示

OTHERカテゴリの最新記事