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

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

【トリビア】Rubyにおける3連引用符(ダブルクオート3つ)は何を意味しているのか?

## はじめに:Rubyクイズ!!

Rubyプログラマのみなさん、こんにちは。
突然ですが、問題です。
以下のコードを実行すると何が起きるでしょうか?

“`ruby:sample.rb
msg = “””
Hello, world.
I am Ruby.
“””

puts msg
“`

はい、実行結果はこうです。

“`console
$ ruby sample.rb

Hello, world.
I am Ruby.
“`

どうですか?想像通りの結果になりましたか?
それではまた。ごきげんよう。

・・・ではなくて、上のコードに出てきた3連引用符(`”””`)ってみなさん知ってましたか?
Rubyを長年やってる人もあまり見たことはないんじゃないでしょうか。
というか僕も最近知りました。

## `”””` の種明かし

「Rubyに `”””` なんていう構文はあったっけな〜??」と思ってネットや書籍を調べても、たぶんそんな構文はどこにも載っていないと思います。

これ、実は`””” = “” + “`の意味になっているだけなんです。
つまり、先ほどのコードはこう

元記事を表示

VBScriptをつくってみる(制御構文編)

前回まででVBScriptの変数宣言機能・変数代入機能・演算機能を作りました。
今回は制御構文(If, For)を作ってみます。

まずは、制御構文に対応するように構文解析器を改良します。
VBScriptの文法を知っていればそんなに難しくない構文解析ルールですね。
一部TODOがありますが、そこは見なかったことにして下さい。

“`
block_statement : var_declartion
| if_statement
| loop_statement
| for_statement
| select_statement
| inline_statement nl

# If Statement
if_statement : ‘If’ expr ‘Then’ nl block_statement_list else_statement_list ‘End’ ‘If’ nl { resu

元記事を表示

【Rails】オブジェクト指向について

# はじめに
Rubyに最初に触れる方はオブジェクト指向という言葉はよく聞くけれどいまいち何のことを言っているかわからないという人も多いと思います。なので、このオブジェクト指向について自分の思考の整理も兼ねて記事にしました。
ちなみにオブジェクト指向はRuby以外にもjava,phpなどにも用いられる概念です。

# オブジェクト指向とは
簡単にいうとオブジェクト指向とはオブジェクトを中心に回り、複数のオブジェクトを組み合わせることでプログラムを構築していくという考え方のことです。
###オブジェクトとは
オブジェクトとはデータや処理の集まりのことを指します。
ただし闇雲なデータや処理が集まったものではなく、**一つのテーマの下**で集まったものです。
イメージとしては、オブジェクトというのは概念のようなものではクラスとインスタンスによってできているという感じです。
またオブジェクトは振る舞いというものを持っています。振る舞いとは自分自身に対する操作のことで、
仮にAさんとBさんという別々のオブジェクトがいた場合に、名前を教えてと言うと、Aさんは「私はAです」、Bさんは「私はBです」と

元記事を表示

【ポートフォリオ】UROGを開発しました

#どんなアプリを作ったか – 概要

カテゴリー毎にURLを分けて保存できるメモアプリです。
https://www.urog.me/
![00bcn-u0lm8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407892/43d60069-f80e-b258-b20c-e46309b130a4.gif)

お試しで利用したい方は、以下のemail,passwordを使ってみてください。
(もちろん新しくユーザー登録も可能です)

“`
email: aaaaa@email.com
password: aaaaaaaa
“`

github:https://github.com/koao123/urog_app

##アプリ・筆者についての解説

使用言語・フレームワーク:Ruby・Rails・HTML・CSS・BOOTSTRAP
使用ツール: github, heroku, AWS(cloud9)

開発期間:2ヶ月
勉強期間:半年

##このアプリでできること
ユーザー登録

元記事を表示

【Ruby】文字列の文字数を求めるアルゴリズム

この記事ではRuby 2.6を使っています。

`count`や`length`、`size`を使用せずに文字列の文字数を取得するというやつです。
`for`や`split`の使い方の練習も兼ねてやってみました。

要件

– `count(“文字列”)`のように、関数に対して文字列の引数を渡すと、文字列の文字数が返却される
– `size`, `length`, `count`メソッドを使用してはならない

例えば`”hello!”`という文字列を与えたときに6が返ってきたら成功です。

手順のフロー化

手順をフロー化します。

1. 文字列を取得する。
2. 文字列を配列として1文字ずつ分割
3. 配列を繰り返し処理、その都度変数に+1を実行

実装

`.split(“”)`のように引数に空文字列””を指定すると、1文字ごとに分割した配列を返します。
ここでは文字列 `”hello!”` が配列`[“h”, “e”, “l”, “l”, “o”, “!”]`となります。

“`ruby:count.rb

def array(str)
array = str

元記事を表示

[Ruby on Rails5 アプリケーション プログラミング]学習ログ#3[2019/12/13]

**前回 -> [[Ruby on Rails5 アプリケーション プログラミング]学習ログ#2[2019/12/12]](https://qiita.com/CAD-guest01/items/0d8a89a724c588f8ec3f)**
**次回 -> [[Ruby on Rails5 アプリケーション プログラミング]学習ログ#4[2019/12/14]]**


#目的
### Progateで学んだことをローカル環境で手を動かして復習することで、基礎を固める

#使用する教材
###山田祥寛(2017). RubyonRails5 アプリケーションプログラミング 株式会社技術評論社

#Q.「RubyonRails5 アプリケーションプログラミング」とは?
#A.ProgateのRoRコースを終えた後にするRoRの勉強としておすすめされている本

出典
(Samurai Blog / Ruby on Rails学習本おすすめ6選【入門者〜上級者までレベル別に解説】)[https://www.sejuku.net/blog/110292]


#今日したこと
##

元記事を表示

Railsでウィザードフォームを作ってみた

#はじめに
閲覧いただきありがとうございます。
よわよわエンジニアです。

僕みたいなよわよわエンジニアでもわかるように記載していきたいです。
##今回のテーマと環境
Railsでウィザードフォームを実装しました。

Rails 5.2.4
Ruby 2.5.1
gem ‘devise’

デバイスのインストールとモデル作成まではいってると仮定します。

##ウィザードフォームとは?
入力項目が多い際にページ遷移しながら
1ページごとに入力された情報を保持して、全ての入力が終わってから最後にその情報を送信し、
DBに保存するフォームのこと。

要するに入力項目が100個あったとして、
1ページで100個入力するよりも、1ページ10個x10ページ作っちゃおうよというものです。

↓例えばこういうの
スクリーンショット 2019-12-13 18.25.24.pngRailsアプリ開発の事前準備を三分で終わらせる

#背景
Railsのアプリの開発を始めるときに、すぐにアプリの本格的な開発に入れるように、余計な説明抜きで基本的にターミナルのコマンド操作の流れだけを記録したいと思った。

#前提
railsのバージョンは5.2.1。アプリの起動までをゴールとする。

#1.アプリの作成

“`
#アプリを作製するディレクトリに移動
$ cd ~/environment
#Railsのバージョンを5.2.1に設定し、mysqlを使用することを宣言
$ rails _5.2.1_ new profy -d mysql
“`

#2.mysqlサーバー、アパッチの起動
“`
$ sudo service mysqld start
$ sudo service httpd start
“`

#3.必要なGemの導入
今回はデフォルトのgemに加えて下記の4つのgemを追加。

“`ruby:Gemfile
gem ‘pry-rails’
gem ‘devise’
gem ‘therubyracer’
gem ‘jquery-rails’
“`

bundle installを忘れずに

“`

元記事を表示

【Ruby】採用試験でフィボナッチ数列出たけど解けなかったので復習

##執筆者について
・未経験からエンジニアに転職するため就職活動中
・問題が解けなくて悔しい:japanese_goblin:

##フィボナッチ数列について

>n 番目のフィボナッチ数を Fn で表すと、Fn は再帰的に
>
F0 = 0,
F1 = 1,
Fn + 2 = Fn + Fn + 1 (n ≧ 0)
で定義される。これは、2つの初期条件を持つ漸化式である。
>
この数列 (Fn)はフィボナッチ数列(フィボナッチすうれつ、(英: Fibonacci sequence)と呼ばれ、
>
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, と続く。最初の二項は 0, 1 であり、以後どの項もその直前の2つの項の和となっている。
>
出典:

元記事を表示

rbenvでインストールしたrubyがcommand not foundになる

##現象
rbenvでrubyをインストール後に`$ ruby -v`をしたところ
`$ -bash: ruby: command not found`となってしまった。
こちらの[記事](https://qiita.com/Kaisyou/items/34ea9b5800434c1e09e6)と同じ現象かと思い、
`$ rbenv global 2.6.5`としたが、解決しなかった。
##原因
単純にパスが通っていなかったことが原因なのだが、どこにrubyがインストールされているのかわからなかったため、インストール時と同様に
`$ rbenv install -v 2.6.5`としてみると
以下が表示された。

rbenv: usr/local/rbenv/versions/2.6.5 already exists
continue with installation? (y/N)

現在インストールされているパスがわかったので、`N`を入力してインストールを中止。
パスを通すために.bash_profileをいじる。

##解決法
`$ vi ~/.bash_

元記事を表示

【Rails6】(送信時のリロード無し!)Action CableでSlack風チャットアプリを作成

Railsの学習をされた方なら誰しも一度は作ったであろう**Twitterの簡易クローンアプリ**。最初に実装したときは大変でした:sweat:

この記事では, **Action Cable** を利用して, **Slack** のようなリアルタイムチャットアプリの作成方法,さらに Javascript でいろいろな機能を付けるところまでを解説します!

なお, Action Cable を扱う多くのチャットアプリ記事では,**メッセージ送信時にリロードが発生**しますが,この記事では**送信も非同期で行える**ように設計します。

容量制限の都合で見づらいですが,こちらが完成後のチャットアプリです。

![chat_app.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431142/2c8ac242-a

元記事を表示

field_error_procで[Rails/OutputSafety]を回避

# field_with_errorsをカスタマイズしたい

### アプリ全体に適用する

“`rb:config/application.rb
config.action_view.field_error_proc = Proc.new do |html_tag, instance|
%Q(#{html_tag}).html_safe
end
“`

参考 : [Railsのバリデーションエラーで、「field_with_errors」によるレイアウト崩れを防ぐ
](https://yukimasablog.com/rails-field-with-errors)

### ページ単位

app/hoge_helper.rbあたりに書く。

“`rb:app/hoge_helper.rb
module SportsHelper
ActionView::Base.field_error_proc = proc do |html_tag|
%(Slimについてざっくりまとめて見た

何を勉強したか、
何を理解したか、
まとめるためにここに書きます?

#Slimとは
ruby製テンプレートエンジン。
HTMLの代替できる。

##特徴
めちゃシンプルにかける。
そのため見やすい。
コード量が少ない。
そんなに難しくない。

##Slimのコマンド
Slimで使うコマンドはslimrb
slimrbとなるのは、多分ruby製のテンプレートエンジンだからかな?

##Slimの拡張子
拡張子は.slim

“`index.html




Slim書いて見た

Slim

Slimだよ

アダダダダダダダダダ

アダ

元記事を表示

Fast JSON API の Serializer で定義したキーから任意のキーを指定して使う

### 概要
Ruby 向け JSON:API シリアライザー である Fast JSON API を使用して json を生成する際に、Serializer で定義したキーのうち一部のものだけ指定して使いたいときの話。

### 前提

以下のような Serializer が定義されているとする。

“`rb
class PostSerializer
include FastJsonapi::ObjectSerializer

belongs_to :user
attributes :title, :content, :created_at
end
“`

“`rb
class PostSerializer
include FastJsonapi::ObjectSerializer

atrributes :name, :birth_date
end
“`

### 手順
上記の Serializer を使って json を生成する処理は以下の通り。

“`rb
@posts = Post.all
PostSerializer.new(@posts

元記事を表示

Rubyの変数の定義(クラス変数)

## Rubyの変数の定義について、今回はクラス変数
前回までに[ローカル変数](https://qiita.com/nyan_tech_24/items/bf52e294e86910d23570)と[インスタンス変数](https://qiita.com/nyan_tech_24/items/7bd5bb0bd5e092dbb778)について書きました。

そして今回はクラス変数について書こうと思います。

## 命名規則
– 先頭は@@をつける
– 変数の構成は英数字と_が使える

“`ruby
@@student = ‘Taro’
warning: class variable access from toplevel ##なぜかwarningが出る
=> “Taro”
@@_STUDENT_2 = ‘Jiro’
=> “Jiro”
@@1_STUDENT_3 = ‘Sabu’ #@@のすぐ後ろに数字は定義できない
SyntaxError:`@@1′ is not allowed as a class variable name

@@student5 #クラス変数に何も

元記事を表示

RESAS-API をdockerで

Ruby + RESAS-API で観光資源の位置情報(緯度経度)を取得する
https://qiita.com/niwasawa/items/608bbac1fbef3e086210

“`shell-session:macOS
$ docker run -v /Users/administrator/Downloads/ruby:/tmp/ruby -p 8080:8080 -it ruby /bin/bash
“`

“`docker:ubuntu
# apt update; apt -y upgrade
# apt install -y vim wget apt-utils sudo
# vi resas.rb
# ruby resas.rb
{“statusCode”=>”403”, “message”=>”Forbidden.”, “description”=>””}
Traceback (most recent call last):
resas.rb:34:in `

‘: undefined method `[]’ for nil:NilClass (N

元記事を表示

NameErrorでやられた話(超初学者)

#・とあるRailsの教材を使って掲示板アプリを作っているときにどつぼにはまった超初学者エラーの話です。

####~投稿者のスペック~
・プログラミング歴2ヶ月
・ポンコツです

先週からRailsの勉強をスタートし掲示板アプリ作成が順調に制作が進んでいました。(ほとんど理解できていない)

掲示板の投稿に対してのコメント削除を実装しているときにやつが飛んできました。

スクリーンショット 2019-12-13 14.02.22.png

???ネームエラー?”syntax error”の仲間か!と勝手に解釈。

これまでにも何度も”syntax error”に出くわしていたのでちょろいなと思い該当のCommentControllerをチェック

スクリー</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>Rails</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/KOUICH1039/items/b30c3497bf1275930b10'>元記事を表示</a></div>
<h3 id=個人メモ: ランダムな何かを生成する Ruby ワンライナー

個人的に必要になるけど、よく忘れるのでメモ

#### 13桁のランダムな数字 (ただし、先頭は常に `1`)

“`ruby
ruby -e “puts(‘1’ + (1..12).map { (‘0’..’9′).to_a.sample }.join)”
“`

#### 20 バイトのランダムなバイト列 (hexadecimal 形式)

“`ruby
ruby -r securerandom -e ‘puts SecureRandom.hex(20)’
“`

元記事を表示

2019/12 nginx Unicorn Sinatraの環境構築

# nginx Unicorn Sinatraの環境構築

## 要点
Windows のWSL(ubuntu 18.04)でnginx Unicorn Sinatra のローカル環境構築をしようとしたら, nginxとunicornのunix socket 通信でaddress already in use エラーが出て詰まった.
これはWSL特有の問題らしい.
Docker 内のubuntu:18.04 で同様にやったら動いた.
以下の記事に詳細と詰まりそうなところの対処を書いてある.

https://note.com/110416/n/n63c4c3411006

元記事を表示

某フリーマーケットサイトのヘッダーを作成するために学習した事

#1 fontawesomeの導入に関して
以下の手順で導入

“`GEMFILE.
gem ‘font-awesome-sass’
“`

“`ターミナル.
bundle install
“`

“`app/assets/stylesheets/application.css.scss
@import “font-awesome-sprockets”;
@import “font-awesome”;
“`
上記を実施したとしてもapp/assets/stylesheets/application.cssが存在する場合にはこちらが優先されて読み込まれることにより反映されないことに注意する必要がある。

使用例)

“`index.html.haml
= icon(‘fas’, ‘list’, class: ‘aaa’)
“`
第一引数のfas部分に関しては使用アイコンによりfarを使用する加藤が異なるところに留意する必要がある。また、第二引数のlist部分に関してはアイコンの種類の選択、第三引数部分に関してはclassを指定することで任意のクラスを入力することができる。

元記事を表示

OTHERカテゴリの最新記事