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

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

サンプルコードでわかる!Ruby 2.7の主な新機能と変更点 Part 3 – 新機能と変更点の総まとめ

## はじめに
Rubyは毎年12月25日にアップデートされます。
Ruby 2.7については2019年12月21日にrc2がリリースされました。

[Ruby 2\.7\.0\-rc2 リリース](https://www.ruby-lang.org/ja/news/2019/12/21/2-7-0-rc2-released/)

この記事ではRuby 2.7で導入される変更点や新機能について、サンプルコード付きでできるだけわかりやすく紹介していきます。

ただし、Ruby 2.7は多くの新機能や変更点があり、1つの記事に収まらないのでいくつかの記事に分けて書いていきます。
番号指定パラメータ、パターンマッチ構文、キーワード引数に関する仕様変更についてはすでに他の記事で説明したので、本記事ではそれ以外の変更点を説明しています。

### すでに説明したRuby 2.7の新機能や変更点はこちら

Ruby 2.7の新機能や変更点は非常に多いので、いくつかの記事に分けて説明しています。
以下の記事はすでに公開済みです。

– [サンプルコードでわかる!Ruby 2\.7の主な新機能と変更点

元記事を表示

attr_accessorを順を追って理解してみた

#はじめに
去年attr_accessorについてまとめた物がqiitaの下書きに眠っていたので投稿しておきます
#attr_accessorとはなんぞや
attr_accessorはattr_readerとattr_writerを組み合わせたやつです
クラス外からインスタンス変数に参照したり変更する時に使われます

####attr_reader####
“`huga.rb
class Huga
def hoge
@hoge
end
end
“`

####attr_writer####
“`huga.rb
class Huga
def hoge=(val)
@hoge=(val)
end
end
“`

####attr_accessor####
“`huga.rb
class Huga
def hoge
@hoge
end
def hoge=(val)
@hoge=(val)
end
end
“`
なんだかしっくりこないので**attr_re

元記事を表示

Railsにマークダウン記法を取り入れる方法

## 結論
1,2,3を導入すればいい

**1.** gem ‘redcarpet’

**2.**

“`rb
module MarkdownHelper
def markdown(text)
options = {
filter_html: true,
hard_wrap: true,
space_after_headers: true,
with_toc_data: true
}

extensions = {
autolink: true,
no_intra_emphasis: true,
fenced_code_blocks: true,
tables: true
}

renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, exte

元記事を表示

Rails6 each文にてeachがメソッドとして扱われて困った話

# 目的

– each文を使用してカラム内容を順に出力したい時にeachがメソッドとして扱われてしまって困ったときの解決法をまとめる

# 結論

– each文で繰り返し処理の対象の変数に格納されている値を配列状態で格納する。

# エラーの内容とエラー時のコード

– 当該ページは`@posts.content`に格納されている内容をeach文で次々渡し、表示する処理がある。
– 当該ページへアクセスしたところ下記のエラーが発生した。

“`
undefined method `each’ for #
“`

– エラーに関係するルーティングファイルの内容を記載する。

“`rb
get “posts/index/:id” => “posts#index”
“`

– エラーに関係するpostsコントローラファイルの内容を記載する。

“`rb
def index
@posts = Post.find_by(id: params[:id])

元記事を表示

form_tag,form_withと空のnewアクション

#はじめに
今スクールでpictweetという、写真とツイートを一緒に投稿できる、簡単な練習用のwebサービスをつくっているのですが、ふと気になったことがあったので記事にしてみました。
#form_tag,form_withとnewアクション
MVCモデル学習し、ツイートが投稿されたときの流れも理解していたつもりでした。
投稿されたデータがデータベースに保存されるためにはnewアクションでインスタンス変数を定義しなければいけないと思っていたのですが、、、
サンプルコードを見ると

“`ruby:qiita.rb
def new
end
“`
え???newアクションの中身なにもないやん!(◎_◎;)
でもよく似たwebサービスのサンプルコードではpostsコントローラに「@post = Post.new」としっかりインスタンス変数が定義されていました。
何が違うの?
と思って数時間かけて調べた結果,HTMLでform_tagを使用していた場合は、newアクションでインスタンス変数は定義しなくていいみたいです。
逆にform_withを使用する場合は@モデル名で定義しな

元記事を表示

Rustにチャレンジ 2019/12/4 adventcalender

今日は、AdventCalenderの4日目になります

# Rust?
最近、SNSで話題になっているなーと思いつつ、せっかくなので空き時間で
チャレンジしてみました( ゚Д゚)

# 使いやすい?
学習して合計5日ぐらいなので「俺たちはわからない、感覚で書いている」という状態です。

# 環境について
RustのPlayGround ( https://play.rust-lang.org/ ) を使いました

# 今回作ったときの手順
1.過去に作っていたプログラミング言語で簡単なプログラムを用意する
お仕事のソースコードとかは持ってこれないので、ある程度書きなれている言語で
お題を考えながら用意してみる

僕は、Ruby(普段PHPやPythonのLL系が多いので)で以下のようなコードを用意しました

“`rb
# Your code here!

# XR簡易ゲームのコンソールイメージで3択ゲームとして実装

# じゃんけんなので、0=グー、1=ちょき、2=パー

srand(Time.now.to_i)
player_value = rand(3)
# issue

元記事を表示

Rubyであたまの体操

## あたまの体操してますか?
– 以下は、 [プログラマ脳を鍛える数学パズル](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E8%84%B3%E3%82%92%E9%8D%9B%E3%81%88%E3%82%8B%E6%95%B0%E5%AD%A6%E3%83%91%E3%82%BA%E3%83%AB-%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E9%AB%98%E9%80%9F%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E6%9B%B8%E3%81%91%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B70%E5%95%8F-%E5%A2%97%E4%BA%95-%E6%95%8F%E5%85%8B/dp/479814245X/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%8

元記事を表示

Rails の scope 便利手帳

Ruby on Rails で、使いやすいScopeをまとめました。
Model の設計によって差異があるものの、視点は使えるのでは?と思います。

# Scopeとは
Model に scope を記載することで、Controllerなどから、複雑なWhere条件を書かずにデータを取りだせるようになります。

“`ruby:app/model/article.rb
class Article < ApplicationRecord scope :newer, ->{order(“updated_at DESC”) }
end
“`

これによって、Controllerなどで

“`ruby:app/controllers/articles_controller.rb
@articles = Article.newer
“`
で、更新日が新しい順に取得することができます。

“`ruby:app/controllers/article.rb
@articles = Article.newer.limit(5)
“`
とすると、更新日が新しい順に5件を取得できます。

元記事を表示

明白かつ現在のSlack:Slackの各種イベントを監視するbotを気軽に作れるようにした

この記事は**[『Slack Advent Calendar 2019』](https://qiita.com/advent-calendar/2019/slack)**24日目の記事です。

## :rocket: 3行でおk
– Slack上でのチャンネル作成などのイベントを検知するbotが欲しい
– 手軽にRubyでbotが作れる mobb というライブラリを使いたい
– [mobb上で簡単に作れるreppハンドラ](https://github.com/rutan/repp-heartful_slack)をつくったよ

## :muscle: モチベーション

※このセクションはポエムなので、興味がない方とQiitaの運営の方は読み飛ばしてください

### Slackで何が起こっているか、知ってますか?

Slackはとても便利な ~~ゲームプラットフォーム~~ チャットツールです。
複数拠点をまたいだやり取りや、リモートワークなどを支える
重要なコミュニケーションツールとしての地位を確立しつつあります。

一方、会社や学校、大規模コミュニティなど多くの人が所属するチームで使

元記事を表示

【Rails 6】(初心者向け)Ajax版最小構成CRUDアプリ(ページ移動をゼロに!)

Railsの学習で最初に学ぶのが,メッセージの作成・表示(読み取り)・更新・削除のできるCRUDアプリであると思います。私も最初にCRUDアプリを作成したときは,正直理解が追いつきませんでした:sweat_smile:

ところが,実際に作成してみるといろいろと不満が出てくることでしょう。一番は「見た目」だと思いますが,

「ボタンをクリックするたびにページを移動するのは嫌だなあ……」

と思いませんでしたか?特に本番環境では読み込みに時間がかかってしまいます。そこで,この記事では,ページ遷移ゼロの最小構成CRUDアプリを作成していきたいと思います:grinning:

通常のCRUDアプリを理解していたならば,本記事も理解できるようなるべく丁寧に解説していきます。

この記事では,Rails標準の **Ajax** の使い方を学ぶことだけに焦点を当てます。そのため,見た目・バリデーション

元記事を表示

.orderで並び替えたデータ取得時の注意点

映画レビューアプリを作成中に気づいたことです!

レビュー投稿画面に移行時に
①Movieテーブル最新データ1つ取得→ *fleshmovie = Movie.order(updated_at: :desc).limit(1)*
②最新データidカラムの値をインスタンス変数に定義→ *@movie = fleshmovie.id*

“`ruby:reviews_controller.rb
def new
fleshmovie = Movie.order(updated_at: :desc).limit(1)
@movie = fleshmovie.id
end
“`

“`ruby:error_code
[2] pry(#)> @movie
Movie Load (0.6ms) SELECT `movies`.* FROM `movies` ORDER BY `movies`.`updated_at` DESC LIMIT 1
↳ app/controllers/reviews_controller.rb:10
=>

元記事を表示

CircleCiで、mysqlのDBに接続してテストを通す。ruby on rails

# ruby on railsのCircleCiで結構はまったのでメモ

## データベースの接続設定

“`appli/config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
host: localhost

test:
<<: *default username: 'root' password: 'rootpass' port: 3306 host: '127.0.0.1' database: ci_test ``` ```circleci/config.yml # Ruby CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-ruby/ for more details # version:

元記事を表示

【環境構築】Docker + Rails6 + Vue.js + Vuetifyの環境構築手順

## はじめに
**Docker + Rails6 + Vue.js + Vuetify**の開発環境構築手順をまとめました。

以下の記事を参考にさせて頂きました!**ありがとうございます**:bow_tone1:

– [webpackerを使ってRuby on Rails 6.0とVue.jsを連携する方法(フロントエンド編)](https://ubiqlog.com/archives/13845)
– [Rails+Vue.js+Vuetify環境の構築手順 – Qiita](https://qiita.com/kuunii/items/a9f68c1838a019d77202)
– [【Rails6】10分でRails + Vue + Vuetifyの環境を構築する – Qiita](https://qiita.com/Ryoga_aoym/items/e1d91351389904240594)

## 環境
“`yaml
OS: macOS Catalina 10.15.1
zsh: 5.7.1
Ruby: 2.6.5
Rails: 6.0.2
Docker: 19.0

元記事を表示

欅坂46の歌詞を形態素解析してみた(MeCabをRubyで使う)

# はじめに
12月14日に[平成Ruby会議01](https://heiseirb.github.io/kaigi01/)に参加してきました。

「[階層的クラスタリングをRubyで表現する](https://speakerdeck.com/ayumitamai97/implement-hierarchical-clustering-analysis-using-ruby)」のセッションに影響されて、
普段、自然言語処理や統計などやっていない素人がやってみました。

# 環境
macOS Cataline 10.15.2
Ruby 2.5.3
Homebrew 2.2.1

# インストール
MecabとMecabで使用する辞書をインストールします。

“`
$ brew install mecab
$ brew install mecab-ipadic
“`
“`
$ mecab -v
mecab of 0.996
“`
続いて、
MecabをRubyで扱うことのできる`natto`をインストールします。

“`
$ gem

元記事を表示

ライブラリの定期アップデートのPRをどこまでレビューするか

# 前提

あくまで私がどこまで見てるか、です。会社・チーム・文化によって違うと思うので参考程度に見てください。
今まで Ruby の開発がメインだったのでその経験をもとにしています。

思い出しながら書いてるので、えいっと書き出したものなので、書き漏れがあるかもしれないのですが、それはご了承ください。
また、表現が適切じゃない箇所もあるかもしれないのですが、そこもいい感じに読み取っていただけると助かります >< # しない話 - 定期アップデートをなぜやるのか - 定期アップデートをどうやるのか # レビュー時にみるポイント - どれくらいバージョンが上がっているのか - メジャーなのかマイナーなのかパッチなのか - 現在のバージョンはいくつか - production 用か devleopment 用か test 用か - 言語系か小さなツールか - 作者・チームは信頼できるか・きちんとメンテされているか - changelogはきちんと書かれてるか - どういう変更か・breaking changesがあるか - feature/bugfi

元記事を表示

[Ruby] より細かくMetricsを取得したい [Heroku]

2016年に[[Ruby] かしゆかの誕生日!](https://qiita.com/sho7650/items/b5d3ba1a6a053b4a4375)という潔すぎる Advent Calendar を書いてから 3年。またこの地に降り立ちました、しょっさんです。もちろん、本日もかしゆかの誕生日です、おめでとうございます!!!

今日は[Ruby Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ruby)の 23日目、今年もかしゆかの誕生日です!! 昨日は[fursich](https://qiita.com/fursich)さんのネタ待ち、明日は[ooooooo_q](https://qiita.com/ooooooo_q)さんです!!

# [Heroku Ruby Language Metrics](https://devcenter.heroku.com/articles/language-runtime-metrics-ruby)(Public Beta) がでたぞ!

public beta なの

元記事を表示

Ruby on Rails 初歩の初歩

#備忘録
こんにちは!HLDの井出です。(https://t.co/FiYK5Qty3J?amp=1)
今回は、Railsについての備忘録を残していきます。
インストールからscaffoldまでです。
##環境
– Windows10
– viniciusfs/centos7
– rails 5.1.3

##準備
Rubyのインストール
参考:https://github.com/rbenv/rbenv
流れは、まず管理ツールのrbenvをインストール。
          ↓
インストールできるバージョンの確認
`$ rbenv install –list`
欲しいバージョンをインストールしたら、
`$ rbenv grobal バージョン`
`$ rbenv rehash`
そして、
`$ ruby version`
で、バージョンが表示されたらOK!!

###railsのインストール
`$ gem install rails -v x.x.x` (Xは欲しいバージョン)

**その前に**
下拵えで、nodejsとsqlite3をインストールしておきます。しておかない

元記事を表示

多目的遺伝的アルゴリズムで恋愛シミュレーションゲームでのひとりぼっちを回避する

アマガミの季節になりましたね。
この時期になると、ときめきなメモリアルを作りたいなぁと考える方がいるかも知れません。

そこで、今回は恋愛シミュレーションゲームを人工知能(AI)の力でヒロインを攻略して、ひとりぼっちを回避したいと思います。

……ただ、ヒロインを1人攻略するだけでは面白くありません。複数のヒロインを同時に攻略していきたいと思います。

ソースコードはGithubで公開しておりますので、詳細はそちらをご確認ください。
https://github.com/Adacchi3/MultiObjectiveGA

## 多目的遺伝的アルゴリズム
今回は多目的遺伝的アルゴリズムを使用します。

多目的遺伝的アルゴリズムは、遺伝的アルゴリズムを多目的最適化に適用したものであり、近似解を探索するメタヒューリスティックアルゴリズムです。

基本的なプロセスは遺伝的アルゴリズムと同様で以下の通りです。

1. 初期集団の生成
2. 遺伝子の評価
3. 交叉
4. 突然変異
5. 終了条件になるまで2.-4.を繰り返す

多目的遺伝的アルゴリズムの特徴は、遺伝子の評価に複数の評価関数を使

元記事を表示

Rails6 のちょい足しな新機能を試す113(MySQL enum set 編)

# はじめに

Rails 6 に追加された新機能を試す第113段。 今回は、`MySQL enum set` 編です。
Rails 6 では、MySQL の enum や set のカラムの schema dump が正しく出力されるようになりました。

Ruby 2.6.5, Rails 6.0.2.1, MySQL 8.0.16 で確認しました。 (Rails 6.0.0 でこの修正が入っています。)

“`shell
$ rails –version
Rails 6.0.2.1
“`

今回は、users テーブル (User モデル)に `enum` と `set` のカラムを追加して試してみます。

# Rails プロジェクトを作成する

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

# User モデルを作成する

`name` カラムだけもつ `User` モデルを作成します。

`enum` と `set` のカラムは、後で、migration ファイルを直接編集して、追加します。

元記事を表示

Cable master とドント方式と中央値の中央値

# はじめに

競技プログラミングで見つけたとある問題が見かけの違う別の問題と本質的に同じで、その最小計算量オーダが意外と小さかったというお話です。

# Cable master 問題

その問題は「プログラミングコンテストチャレンジブック」 (通称「蟻本」。表紙に蟻の絵が描いてあるから) の中級編の問題
「Cable master」
(英語版の元問題は[こちら](http://poj.org/problem?id=1064))

> 長さがそれぞれ $ L_i $ であるような $ N $本の紐があります。これらの紐を切って、同じ長さの紐を $ K $本作るときの最長の長さを求めなさい。
> 答えは小数以下2桁までを切り捨てて出力しなさい。

蟻本では二分探索を使って解の近似値を求めていますが、こういう問題を見たら近似値ではなく厳密な値を求めたくなるのが人間の性(さが)ですよね。

厳密な解はN本の紐のどれかをある本数で割った長さになるはずです。
なぜならちょうど割り切れた長さでなければまだ伸びしろがあるわけですから解が最長の長さであることに矛盾します。
つまり解は

“`m

元記事を表示

OTHERカテゴリの最新記事