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

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

Ruby 基礎文法 解いてみた編 1

# はじめに
Rubyの基礎を学習中の方に向けて記載致します。
実際に問題を解いた内容をOutputします。
省略方法やご参考になる記事等ございましたら、ご教授頂けますと幸いです。

#While文からfor文への変換

“`qiita.rb
#while文
num = 0
while num < 100 do puts num num += 1 end #for文 for num in 0..99 do puts num end ``` #ハッシュから値だけを取り出し、配列にする。 **ただし、hashクラスのvaluesメソッドは利用しないこと。** ```qiita.rb # ハッシュ attr = {name: "田中", age: 27, height: 180, weight: 75} #回答 values = [] attr.each do |key, value| values << value end ``` #さいごに 日々勉強中ですので、随時更新します。 皆様の復習にご活用頂けますと幸いです。

元記事を表示

「Ruby での Cloud Storage の使用」をやってみた

[Ruby での Cloud Storage の使用](https://cloud.google.com/storage/docs/quickstart-ruby?hl=ja) を実施する中で苦労した点を書きます。

## 環境
– Windows
– Ruby

“`
>ruby –version
ruby 2.4.9p362 (2019-10-02 revision 67824) [x64-mingw32]
“`
WindowsでRubyを使おうとするから苦労するのだと思う。。。

## コマンドが実行できない

このコマンドが実行できませんでした。

“`
× bundle exec ruby buckets.rb create my-awesome-bucket
“`

Windowsなので拡張子まで書きましょう。

“`
○ bundle exec ruby.exe buckets.rb create my-awesome-bucket
“`

## 認証が通らない

このページの範囲では認証についての記載を見つけられませんでしたが、次の流れで認証を通せました。

元記事を表示

Choices.js + fetchAPIでフィルタ付き動的セレクトボックス [脱jQuery]

## 概要
件名のモノが必要になった時
ググって出てきたのはajaxやcoffee script、select2にchosenと
内容が古かったり環境制約で使えないものだったりで苦しめられたので
rails6とpure javascriptで動くサンプルを遺します↓

***

親カテゴリの選択に応じて動的に子の選択肢をセットする
![Screen Shot 2020-02-09 at 2.18.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582041/81e9dcdb-c55b-fbd6-37b9-6b6b8484bd02.png)

***

フィルタ検索機能
![Screen Shot 2020-02-09 at 4.01.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582041/6e579919-dd29-9ddc-9ba6-f1c5b9a86c49.png)

***

#### [Sampl

元記事を表示

centosでgemがタイムアウトになる現象の解決方法

# 概要
* CentOS 8でredmineをインストールしようとしたときに、bundleがインストールできなかった。
* `gem install bundler` と何度入力してもタイムアウト
* IPv6を無効化したらあっさり解消

# 方法
`/etc/sysctl.conf `を書き換える。

“`shell-session
# vi /etc/sysctl.conf
・・・
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
・・・

# sysctl -p
・・・
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# nmcli c mod eth0 ipv6.method ignore
“`

これで解消しました。

# 参考
https://server.etutsplus.com/centos-7-network-configuration/2/

元記事を表示

敢えてRubyで学ぶ「ゼロから作るDeep Learning」MNISTデータセット編

「ゼロから作るDeep Learning」の72p「3.6 手書き数字認識」では、MNISTの文字のデータセットを取ってくる。読み込ませる独自のpythonのコードがモリモリ出てきて、Rubyで簡単にコード変換できない。そこで外部Gemを頼りつつ、MNISTのデータを読み込ませてみた。

# [Red Datasets](https://github.com/red-data-tools/red-datasets) を使う

Rubyから、機械学習の定番データセットを作ってくれるGem。MNISTの手書き数字も大量に入っている。

### install
“`
$ gem install red-datasets
“`

ついでに画像処理用のmini_magickも入れておく

“`
$ gem install mini_magick
“`

### 中身を確認

“`ruby
require ‘numo/narray’
require ‘numo/gnuplot’
require ‘datasets’
require ‘mini_magick’

minst = Datas

元記事を表示

初めてのWebアプリ制作 – ruby on rail – 4日目

#はじめに
せき風邪をひいて4日程寝込んでおり、更新が止まってしまってしまいました・・・(´・ω・`)
新型コロナが流行ってる最中なので、病院ヘはいかず自宅療養してました
皆様も今の風邪にはご注意ください!

#4日目
それでは、4日目についてまとめて行こうと思います。

まず最初に、風邪で寝込んでる最中もスマホを使って、
rails関連の記事などを読んでいました。
そんな中で下記記事に行きつき、衝撃を受けます・・・。

Herokuでアップロードした画像が時間経つと消える問題

Herokuで画像アップロード機能を備えたWebアプリをデプロイした場合、
画像の保存自体はできるが、一定時間で消えてしまうという内容の記事でした。

Herokuで画像アップロード機能を利用したWebアプリをデプロイする場合は、
画像をクラウドストレージなどを利用する必要があるそうです。

そのため、画像アップロード機能自体を見直すことになりました。

#画像アップロード機能の

元記事を表示

Ruby用2Dゲームライブラリ DXRuby:使い方の初歩

# 概要
この記事は中高生向けプログラミング教室の教材として作ったものを一部改変したものです。
Rubyでプログラミングの初歩を学んだ次のステップとして、ゲームライブラリDXRubyの使い方を学んでいきます。

# 技術解説
## 使用ライブラリ
Windows向けRuby用2Dゲームライブラリ`DXRuby`を使用します。
バージョン`1.4.2`以上を想定しています。

### `1.4.2`より前のバージョンとの主な相違点

– `Window.loop`が複数置ける

– マウス位置を取得する`Input.mouse_pos_x`、`Input.mouse_pos_y`の新しい書き方として、`Input.mouse_x`、`Input.mouse_y`が追加

→DXRuby 1.4.6:更新履歴
http://mirichi.github.io/dxruby-doc/CHANGELOG.html

### DXRubyインストールの注意点
→ DXRuby 1.4.6 をWindows10で使う時の注意点とインストール方法 – noanoa07 – Qiita
https:/

元記事を表示

Net::HTTPメソッドを使ってBasic認証を突破しよう

こんにちは。

今回、Rubyでgemを使わずにNet::HTTPメソッドを使ってBasic認証を突破し、スクレイピングしました。あまり文献がなかったので、誰かの参考になればと思いこの記事を書いた次第です。

Rubyのバージョンは2.6.5です。

1行1行丁寧に解説していこうと思います。コードだけ知りたい!という方は完成形のコードを参考に実行してみてください。
完成形のコードはこちら↓

“`Ruby:scraping.rb
require “net/http”

username, password = “ユーザー名”, “パスワード”
uri = URI.parse(“スクレイピングしたいページのURL”)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
http_get = Net::HTTP::Get.new(uri.path)
http_get.basic_auth(username, password)
response = https.request(http_get)
respons

元記事を表示

【RSpec】spec/rails_helper.rbを和訳&補足してみた

# はじめに

rails_helperの設定をこんな風にしていますという記事はあるのですが、そのオプションによって何をしているのか今一つわからなかったので、自分用に和訳&補足してみました。
忘れた頃の自分やRSpec初心者のためになればと思います。正確性に関しては自信ないです!

RSpecのバージョンは`3.9`です。

(2/9追記)編集リクエストを元に修正しました。

## 導入

“`terminal
$ rails g rspec:install
“`

コマンドを打つと、`.rspec`, `spec/rails_helper.rb`, `spec/spec_helper.rb`ファイルが生成されます。
`rails_helper.rb`はデフォルトではこのようになっています。

“`rb:spec/rails_helper.rb
# This file is copied to spec/ when you run ‘rails generate rspec:install’
require ‘spec_helper’
ENV[‘RAILS_ENV’] ||= ‘

元記事を表示

今日はクライアントサイドでセッション管理してもいいのか!!(あまりよくない)

# これはなに?
セッションをクライアントサイドだけで管理するのは難しいのでやめようね。という話をする機会が稀にあるのですがどういうときに困るんだっけ?またはどういう値はクライアントサイドに持っていいんだっけ?というのを毎回自分で考えるのが面倒なので書きました。
ここではクライアントサイドだけでセッション管理するのが難しい理由について説明します。そのあとに翻って一般的にセッションはどういう性質を持っているのか(あるいは持っているべきか)という話をします。

# クライアントサイドだけでやるセッション管理の例
Railsにはセッションストレージとして、CookieStoreというものがあります。説明に関しては
[Railsセキュリティガイド: 2.3 セッションストレージ](https://railsguides.jp/security.html#%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8) から引用しますが
> RailsのCookieStoreは

元記事を表示

親子関係のあるモデルのテーブルの値を一度に保存する方法

## 自分用メモ

“`ruby:Gemfile.rb
gem ‘nested_form_fields’
“`
gemをインストール。

### モデル関係
親:post
子:program
子:dealer
孫:program

“`ruby:model/post.rb
has_many :programs, inverse_of: :post, dependent: :destroy
has_one :dealer

accepts_nested_attributes_for :programs, allow_destroy: true
accepts_nested_attributes_for :dealer, allow_destroy: true
“`
postから見て子供であるprogramとdealerのアソシエーションを書く。

accepts_nested_attributes_forを書くことによって、モデル同士が関連付けられている時に、ネストさせることで一度にまとめて保存できる。
!注意点!
モデルはアソシエーションで単数なのか複数なのかき

元記事を表示

敢えてRubyで学ぶ「ゼロから作るDeep Learning」Docker環境構築編

# Dockerの環境構築

## やること

– ローカルのワーキングディレクトリを作成
– DockerでRubyの環境を作成
– Dockerで作成したワーキングディレクトリをマウントして環境に入る
– Dockerに必要なパッケージ等をインストール
– gnuplot & numo-gnuplot
– プロット用
– numo-narray
– 行列計算 & 基礎的な数学の関数(sin cos exp等)

## Docker環境を作って、ワーキングディレクトリをマウントする所まで
### 実行コマンド
“`sh
# ローカルにワーキングディレクトリを作成
local$ mkdir working_dir
# RubyのDockerイメージを取得
local$ docker pull ruby:latest
# ワーキングディレクトリをマウントしてDocker環境に入る
local$ docker run -v /(workingディレクトリをおいているパス)/working_dir/:/working_dir/ -it rub

元記事を表示

Xcode11で、Distribute時のRubyのエラー:ipatool JSON: (null)

# ipatool JSON: (null)

XcodeでアドホックまたはエンタープライズでDistributeをしようとしたら、以下のようなエラーが出てディストリビューションアシスタントがエラーをはいた。

“`

2020-02-07 01:53:07 +0000 ipatool JSON: (null)
2020-02-07 01:55:20 +0000 [MT] Canceled distribution assistant
“`

# 解決方法
Rubyのバージョンが問題らしい
システムのRubyを使用するように変更

“`
rvm use system
“`

↑を実行したら、Xcodeを再起動すると治る。

参考: https://stackoverflow.com/questions/48698874/react-native-ios-signature-export-ipa-file-error-the-data-couldn-t-be-read-beca

元記事を表示

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

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

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

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

元記事を表示

OTHERカテゴリの最新記事