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

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

Digdag公式ドキュメントからDigdagを学ぶ-アーWorkflow definition

## 目標
Digdagの公式サイトのドキュメントのWorkflow definitionの翻訳+α
http://docs.digdag.io/workflow_definition.html

##目次
[Getting started](https://qiita.com/amagasu/items/92ad70c33f73ab613d08)
[Architecture](https://qiita.com/amagasu/items/572075dcc8b3c8640072)
[Concepts](https://qiita.com/amagasu/items/c850db3b564a7d6dc99c)
Workflow definition
Scheduling workflow
Operators
Command reference
Language API -Ruby
REST API
Internal architecture
Release Notes

## Workflow definition
### **Workflow definition: *.dig f

元記事を表示

emunを日本語化して、連動したラジオボタンを生成する方法

# やりたいこと

以下のようなEmunをラジオボタンで表現したい。

“`
enum loadtype: { normal: 0, trail: 1, beach: 2, track: 3 }
“`
かつ、選択肢は日本語で出るようにしたい。

# enumの日本語化について

こちらの記事の内容に従って日本語化します。
https://qiita.com/tanutanu/items/d44a92425188a4489ec6

# 日本語化したenumに連動したラジオボタンを記述

ViewのFormで以下のように記載

“`
<%= f.collection_radio_buttons :loadtype, Post.loadtypes_i18n, :first, :last %>
“`

コードの意味は以下の通り

“`
<%= f.collection_radio_buttons [column名], [表示対象のコレクション], [value], [textに表示する文字列] %>
“`

元記事を表示

[Rails]DBにデータが登録されない場合の対処法

## はじめに
フォーム入力内容をDBに保存したいがハマったのでアウトプット

## 環境

Rails 5.0.7.2
ruby 2.5.1
mysql 14.14

## 問題点
フォーム入力内容を保存しようとすると、パラメータに保存されているがDBに保存されない。

## 対処方法
保存するメソッドの後ろに!をつけて原因を確認。

すると、**validation failed:User must exist**(エラー内容は異なる場合がありそう)

## 原因
アソシエーションが組まれている際に、該当の外部キーが入っておらず、バリデーションで弾かれているのが原因。

**optional: true**を記述。

“`goal.rb
class Goal < ApplicationRecord validates :name, presence: true, uniqueness: true validates :time, presence: true, uniqueness: true validates :days, presence: true, uni

元記事を表示

Rubyの継承について

#プログラミングの勉強日記
2020年7月11日 Progate Lv.175
RubyⅤ

#継承
 クラスを1から作ることもできるが、すでにあるクラスを利用してそのクラスを元に新しいクラスを作れる。そうすることで共通部分をまとめることができ、効率的にコードが書ける。
 あるクラスをもとにして新たなクラスを作ることを継承という。`class 新しいクラス名 < 元となるクラス名`で他のクラスを継承して新しいクラスを定義することができる。新しいクラスは「子クラス」、元となるクラスは「親クラス」という。  親クラスのインスタンス変数とインスタンスメソッドが引き継がれる。 ```ruby:food.rb require "./menu" class Food < Menu end ``` 子クラスのインスタンスは、継承すると子クラスは親クラスのインスタンス変数とインスタンスメソッドを引き継ぐ。 ```ruby:index.rb food1=Food.new puts food1.name puts food2.info ``` ```ruby:menu.rb class Menu

元記事を表示

Rubyのクラスとインスタンスについて

# プログラミングの勉強日記
2020年7月11日 Progate Lv.175
RubyⅣ

#クラスとインスタンス
 ここでは簡単にクラスとインスタンスについて説明する。プログラミングでメニューという「もの」を作るためには、まずその設計図が必要でとなる。設計図をクラス、「もの」をインスタンスという。(設計図(クラス)をもとに「もの」(インスタンス)を生成)なので、インスタンスを生成するためにはクラスを用意し、クラスからインスタンスを作成、そしてインスタンスに情報を追加する。

#クラスの定義
 クラスは`class クラス名`で定義できる。クラスは必ず大文字ではじめ、`end`を忘れずに書く。

“`ruby:index.rb
class Menu
end
“`

#attr_accessor
 インスタンス変数を直接変更して操作ができるようにするもの。情報を持たせるために`attr_accessor シンボル`と書く。1つのクラスに対して複数のインスタンス変数を使うこともできる。

“`ruby:index.rb
class

元記事を表示

個人アプリ作成#1

# 雛形の作成
rails バージョン new app名 -d MySQL で作成

Git hub Desk topと連携してコードの保存

## トップページの作成
スクリーンショット 2020-07-11 3.25.35.png
この後に、投稿一覧を作りたいと思う。

元記事を表示

[Rails]carrierwaveを使って画像を保存する

タイトルの通りになります。

ゴールは画像を表示させるまでとなります。

## gemを導入

初めはgemを入れます。
バージョンを指定しなければ最新のものがインストールされます。

“`:Gemfile
gem ‘carrirewave’
“`

ターミナルでいつものよろしくお願いします。

“`
$ bundle install
“`

## アップローダファイルの生成

次にアップローダファイルを作成しましょう。

“`
$ rails generate uploader Image
create app/uploaders/image_uploader.rb
“`

これで`app/uploaders`の中に`image_uploader.rb`が生成されていると思います。

ちなみに`Image`の部分はマウントするモデル名だとか,
わかりやすい名前。私はよくImageで生成しています。

“`ruby:image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base # Inclu

元記事を表示

NokogiriをRspecでテストする。

Nokogiriに渡す引数をmock化してテストしたので残す。

“`ruby
FUGA_FUGA = [‘企業’, ‘秘密’]
def hogegiri_method(fuga)
HOGE_COUNT = 5
HOGE_COUNT.times do |time|
html = Nokogiri::HTML(OpenURI.open_uri(url))
a, b, c = 正規表現わちゃわちゃ
break if FUGAFUGA.include?(a)
end
{ a: a, b: b, c: c }
end
“`

色々見せられないコードなのでクソみたいなコードだが、、、今回mockとして偽物の戻り値を作りたいのが

“`ruby
html = Nokogiri::HTML(OpenURI.open_uri(‘内緒’))
“`
ここ

だけどNokogiriの戻り値を直接and_returnで設定するのは難しい。

– 戻り値がNokogiri::HTML::Documentといって単純なhtmlとかを返していない
– method内部

元記事を表示

Digdag公式ドキュメントからDigdagを学ぶ-アーConcepts

## 目標
Digdagの公式サイトのドキュメントのConceptsの翻訳+α
http://docs.digdag.io/concepts.html

##目次
[Getting started](https://qiita.com/amagasu/items/92ad70c33f73ab613d08)
[Architecture](https://qiita.com/amagasu/items/572075dcc8b3c8640072)
[Concepts](https://qiita.com/amagasu/items/c850db3b564a7d6dc99c)
Workflow definition
Scheduling workflow
Operators
Command reference
Language API -Ruby
REST API
Internal architecture
Release Notes

## Projects and revisions
ワークフローはワークフローで使用される他のファイルと一緒にパッケージ化されます。
ファイルは“`SQLス

元記事を表示

画像の登録?もちろんできません(できる)~part2~

##前提
– ruby on rails 6.0.0 を使用。
– ユーザー機能はdeviseにより導入されているものとする。
– viewファイルは全てhaml形式とする。
– ちなみに使っているのはMacBook Air(Retina, 13-inch, 2020)です。

##はじめに
前置きや手順などは part1 に記述してあるので早速実装の続きをしていこうと思います。気になったら是非読んでネ。

part2 でやることとしては手順の2番目にあたる「imageテーブルを関連づけて画像の投稿を実装」というところです。

別テーブルに画像を登録するだけなのに実装するのに3万年くらいかかったので正しい手順を後世に残したいと思います。

##ではさっそく、
本日もはりきってやっていきましょう。

> $ *rails g model image*
> $ *rails db:migrate*

まずはimageモデルを作ってマイグレートする

元記事を表示

【Rails】多対多のアソシエーションを用いてコミュニティ加入の申請/承認機能の実装を行う

# 実施したいこと
申請・承認の仕組みを実装する

# 具体的には?
「ユーザ(小西)が、とあるコミュニティに加入したいと思いますが、
加入にはコミュニティの管理者(大西)の承認が必要になる」といったケースでの実装例です。

# ざっくりイメージ
キャプチャ.PNG

# 処理フロー概要
1. 該当コミュニティ画面にて、ユーザ(小西)が「申請」ボタンを押す。
2. 該当コミュニティの申請待ちリストにユーザ(小西)が追加される。管理者が、該当コミュニティの申請待ち一覧画面を見て、申請者を承認するかどうか判断。
3. 申請を承認する場合は、承認ボタンを押す。申請ユーザがコミュニティに加入し、申請待ちリストからは消去される。
4. 申請を却下する場合は、否認ボタンを押す。申請待ちリストから消去される。

# 環境
Rub

元記事を表示

Ruby と Java で解く AtCoder ABC129 D 2次元配列

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest D – Lamp](https://atcoder.jp/contests/abc129/tasks/abc129_d)*
Difficulty: 1080

今回のテーマ、2次元配列

やっていることは、単純です。

|…#..#.|元の配列|
|:–:|:–|
|12301201|元の配列を左から右にスキャン|
|33302201|スキャンした配列を右から左にスキャン|
合計2回スキャンして左右方向の光の届く範囲を求めます。
次に、上下に2回スキャンして上下方向の光の届く範囲を求めます。

左右用の配列と上下用の配列の値を合計し、その最大値を求めます。
# Java
“`l

元記事を表示

商品情報編集機能を実装したい~part1~

##前提
– ruby on rails 6.0.0 を使用。
– ユーザー機能はdeviseにより導入されているものとする。
– viewファイルは全てhaml形式とする。
– ちなみに使っているのはMacBook Air(Retina, 13-inch, 2020)です。

##はじめに
プログラミング学習のため、某フリマサイトのコピーサイトを作っています。
商品情報編集機能を実装したが、画像の複数投稿になかなか苦戦したので参考になればと思い書くことにしました。
大した量じゃないのにpart分けしているのはあとで見たときに達成感を得るためです。許してください。(いっぱい書いたぞ!ってなりたい)
part1で特に詰まる部分はないと思いますが、part2以降の土台になってくるのでウォーミングアップ程度に書いていきます。

##仕様書
– 商品に登録された情報をひとつひとつ変更できる。
– 商品情報を編集できるのは商品を登録したユーザーのみ。
– 画像の差し替えは一枚ごとにできる。
– 商品名や画像など、すでに登録されている情報は編集画面にあらかじめ表示される。
– エラーハンドリングを

元記事を表示

Kinx アルゴリズム – 騎士巡回問題

# Kinx アルゴリズム – 騎士巡回問題

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。「プログラム=アルゴリズム+データ構造」。アルゴリズムの実装例をご紹介。

元ネタは「C言語による(30年経っても)最新アルゴリズム事典」。今回は騎士巡回問題です。

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

最新アルゴリズム事典にはこういうのも結構載ってる。パズル的な。

元記事を表示

Jekyll を Windows でインストールしてテーマを読み込むときの注意点!! tzinfo が必要!!

##Jekyll を Windows でインストールしてテーマを読み込むときの注意点
“`powershell:cmd
PS C:\Users\—-\Documents\blog\beautiful-jekyll-master> bundle exec jekyll serve
fatal: not a git repository (or any of the parent directories): .git
Configuration file: C:/Users/hideki/Documents/blog/beautiful-jekyll-master/_config.yml
Dependency Error: Yikes! It looks like you don’t have tzinfo or one of its dependencies installed. In order to use
Jekyll as currently configured, you’ll need to install this gem. The full err

元記事を表示

【AtCoder】Rubyで競プロに入門する

大学4年生(2020年7月時点)のゆうやと申します。
僕は趣味で競技プログラミング(AtCoder)をやっています。
茶色コーダーになって何かアウトプットしたくなり、この記事を書くことにしました。

## 対象読者

プログラミング言語Rubyと競プロの初心者に向けた記事です。
Rubyの基本的な文法やメソッド、競プロの基本やヒントについて書いています。

ここで紹介しているのはあくまで僕の書き方・やり方なので、必ずしも最適ではないかもしれない点には注意してください。

この記事に書いてあることを理解して、少し練習問題を解いていくと、AtCoderのだいたいのA問題(一番易しい問題)とB問題(二番目に易しい問題)は解けるようになるはずです。

## AtCoderについて

[AtCoder](https://atcoder.jp/)は、日本で一番有名な競技プログラミングのサイトです。
言い切ってますが、**たぶん間違いない**と思います。

### 概要

土日の21時から、毎週のように競技プログラミングのコンテストが開催されています。
過去のコンテストの問題はいつでも閲覧可能になっ

元記事を表示

ポートフォリオ

#ポートフォリオ1

こちらのポートフォリオは環境構築だけで開発は行っていません。
(aws,nginx,ruby,docker,mysql)を使って環境構築を行いました。

https://github.com/tmk616window/docker-ruby2

#ポートフォリオ2 

ポートフォリオ投稿サイトを作りました。

URLはこちらになります

https://github.com/tmk616window/review00
https://review0.herokuapp.com/

##経緯
まずなぜこれを作ろうと思ったのか説明させていただきます。
自分がインターンの採用のためにポートフォリオを作ろうと思ったときに「何を作ればいいかわからない。どこまで作りこめばいいかわからない。」という悩みがありました。
ツイッターやyoutubeのコメント欄でもこういった悩みを持った方々をよく見かけました。
それだったら何を作ればいいのかまたどれくらい作りこめばいいのかの指標になるようなものをポートフォリオに落とし込んでみようと思いました。

##コンプト
エンジニア採用が決

元記事を表示

【Rails6】hamlを導入したらmissing a templateエラーが発生したときの対処法【超簡単】

**hamlのメリット**

– 閉じタグや“`<% end %>“`が必要なくなり、簡潔にかける。
– インデントがきちっとしていないとエラーになるので嫌でも綺麗にかける。

上記のメリットに加えて、現場でも使われる機会が多いので、勉強がてらRailsにhamlを導入してみました。
そのとき“`missing a template“`というエラーが発生し少し困ったのでここへメモとして残しておきます。
このページを見ているということは既にhamlを導入済身の方が多いと思うので一番下の解決方法へ飛んでください。
そうでない方のためにも、hamlの導入方法についても解説します。

(環境)

– windows10 Pro
– Rails: 6.0.3.2
– ruby: 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
– Docker for windows
– MySQL 5.6
– nginx:1.15.8

##hamlの導入方法

###1.Gemを追記
“`:Gemfile
gem ‘haml-rail

元記事を表示

Ruby on Rails – WSL2上で環境構築から簡単なアプリケーション開発まで

#はじめに
久しぶりにRuby on Rails を触ります。直近のバージョンを触るので、このメモ書きを残しておくことで少しでも皆様のお役に立ちたいと思います。

#環境
Ubuntu20.04 (on Windows10 WSL2)

#Rubyのインストール
– 任意のディレクトリで以下コマンドを実行

“`sh
$ sudo apt-get install ruby
“`

– インストールされていることを確認します。

“`sh
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
“`

– インストールされていますが、気になるメッセージが出力されていました。

“`sh
Suggested packages:
apache2 | lighttpd | httpd ri ruby-dev bundler
“`

– ここではruby-dev、bundler、及びCコンパイラ系のパッケージもインストールしようと思います。

“`
$ sudo gem update

元記事を表示

【Rails】テストの準備からモデル単体テストまで【RSpec】

## はじめに
Railsのテストについて書きます。
RSpecを使ったモデルの単体テストです。バリデーションがうまく働くかどうかを確認することがメインとなります。

## RSpec導入
まずはgemをインストールします。
Gemfileを編集し、bundleインストールしましょう。

“`rb:Gemfile
group :development, :test do
gem ‘rspec-rails’
end

# web-consoleというgemがtest環境の中にある場合はdevelopmentのみに移しておく
group :development do
gem ‘web-console’
end
“`

“`:ターミナル
$ bundle install
“`

続いてrspec用のファイルを用意します。

“`:ターミナル
$ rails g rspec:install
“`
これでいくつかファイルが追加されたと思います。

以下を追加されたファイルの.rspecに追記します。

“`:.rspec
–format documentation

元記事を表示

OTHERカテゴリの最新記事