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

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

プログラミング言語の比較(PythonとJavaとRubyと)

面接で聞かれてしゅって答えられず痛い目にあったので自分用に整理としてみる。

# 概要
自分の経験期間は以下(2020年7月現在)

|言語|使用期間|使用用途|
|—-|—-|—-|—-|
|Python|2018.5 ~ 2020.3|(1)JupyterNotebook上でのWebスクレイピングや機械学習を含むデータ解析 (2)MLOpsにおけるAWS Lambdaの実行スクリプトやAWSBatchの実行ファイル|
|Java| 2018.8 ~ 2019.5|Javaによるスタンドアロンアプリ開発|
|Ruby| 2019.11 ~| RailsでのWebアプリ開発|

– オブジェクト指向やシステム開発の基礎を身に付けたのはJava、Webアプリを実際に作ったのはRuby on Railsである。
– PythonのDjangoはチュートリアルだけやった
– PYthonはデータ解析メインで使ったため、システム開発の経験があるJavaとRubyを比較する。

# Java
– kafka, Hadoopなどデータ処理系には結構よく使われているイメージ。

元記事を表示

Terraform: (とAnsible:とChef:) アレイから、あるキーが特定の値であるハッシュを取り出す。

#やりたい事

**terraformにて、**以下の様なハッシュ(マップ)のアレイ(リスト)から、nameがn2のattrを取り出す。
キーはユニークとする。

“`yaml

array_01:
– name: n1
attr: attr1
– name: n2
attr: attr2
– name: n3
attr: attr3
“`

なお、ansibleならば、selectattrフィルターが、chef|rubyならばselectメソッドが使用可能。

# 方法: ワイルドカード指定のindexを使用する。

なお、.ftではなく、.tf.jsonを使用

“`json:main.tf.json
{
“locals”: {
“array_01”: [
{ “name”: “n1”, “attr”: “attr1” },
{ “name”: “n2”, “attr”: “attr2” },
{ “name”: “n3”, “attr”: “attr3” }
]
},

元記事を表示

マッスルRuby on Rails 1日目~環境構築~

# Rubyとは
– 動的プログラミング言語
– 全てがオブジェクト
– 全ての情報の塊、コードにはプロパティ(インスタンス変数)とアクション(メソッド)を与えることができる
– Rubyの柔軟性
– ユーザーは自由にコアな部分まで変更ができる
– ブロック:表現豊かな機能
– メソッドにどのように振る舞うか記述したブロックを付け加えることができる
– ブロックは関数型言語に影響されてある

# Ruby on Railsとは
– Rubyプログラミング言語で書かれたwebアプリケーションフレームワーク

# 環境構築-準備
## Homebrew
– Mac上でのソフトフェアのパッケージ管理システム
– ソフトウェアをパッケージの依存を関係なくインストールしてくれる

## rbenv
– Rubyのバージョン管理システム
– Rubyのバージョンを簡単に切り替えれる

## Ruby
– 省略

## Ruby on Rails
– 省略

## gem
Rubyのパッケージ(ライブラリともいいます)としてのgem
パッケージとは、プログラムの部品

元記事を表示

getsとgets.chompについて

Rubyでコード書いてて大したことじゃないけど見落としててハマった話を。

#getsとgets.chompの違いはわかっていたつもりだったけど

getsは改行コードが後ろに入っていて、gets.chompは改行コードが入らない、というのは知っていたつもりだったけど、、、

“`ruby
input = gets
array=[‘cat’,’cat1′,’cat2′,’cat3′,’dog’,’tomcat’]
array.each do |a|
puts a.include?(input)
end
“`

とすると、全てfalseで帰ってくる。
冒頭にも書いた通り、getsには改行コードが後ろに入っているので、include?メソッドはcatプラス改行コードで一致するものを探しているので、falseとなるわけです。

“`ruby
input = gets
array=[]
for i in 1..6 do
array_input=gets
array << array_input end array.each do |a| puts a.include?(i

元記事を表示

migrateファイルの変更(rails db:rollback STEP=)

こんにちは、tt_tsutsumiです。
今回もmigrateファイルの変更方法についてです。
こちらの記事が何方かのお役に立てると嬉しいです。

https://qiita.com/tt_tsutsumi/items/ea8bc346d5b9cb21e05b

↑↑↑

前回の記事でmigrateファイルの変更等は行えるようになりました。
その中でファイルを1つずつしかdownに出来ないという話が出て来ましたが、
今回は任意のファイルまでまとめてdownさせる方法を記載致します。
##1. rails db:migrate:status
まずは前回と同様に現在作成しているアプリケーションのmigrateの稼働状況の確認を行いましょう。
コンソールにて下記コードを入力します。

“`
$ rails db:migrate:status

Status Migration ID Migration Name
————————————————–
up year/month/day Devise

元記事を表示

Could not locate Gemfile or .bundle/ directoryと出たときの対処法

日々学んだことやつまずいたことについてまとめていきます。
記載に誤りがありましたら、ご指摘していただけると助かります!
いつも他のかたの記事に助けられているので、少しでもお役に立てればと思います。

##どういうエラーなのか
Gemfileが見つからないというエラー。
##どんなときに起こるのか
作成したアプリのディレクトリに移動していない状態で、

“`
bundle exec rake db:create
“`
などのコマンドを実行した時に起こる。
##対処法
cdコマンドで、作成したアプリのディレクトリに移動してから実行する。

元記事を表示

タクシー数をRubyで調べてみた

不思議な数をRubyで検証シリーズ第2弾!(あと何回続くんだ?)

前回の第1回はこちら↓
[ある範囲内の整数にカプレカ数があるかRubyで調べてみた](https://qiita.com/yosaprog/items/87956b49c259e7282274)

今回は**タクシー数**です。
前回同様Youtubeから題材をいただきました。

[予備校のノリで学ぶ「大学の数学・物理」
ラマヌジャンの天才エピソードでおなじみ【タクシー数】](https://youtu.be/Y8ji2smizYY)

# タクシー数とは
> n 番目のタクシー数(タクシーすう、taxicab number、Ta(n)もしくはTaxicab(n)と表記される)とは、**2つの立方数の和**として n 通りに表される最小の正の整数と定義される。
「タクシー数」と言う名前はハーディが乗ったタクシーの番号1729についてそれがTa(2)であることをシュリニヴァーサ・ラマヌジャンが指摘したエピソードから来ている

> 引用元:[Wikipedia](https://ja.wikipedia.org/wik

元記事を表示

【Ruby】条件分岐について[第一回]

本日より学習したことのアウトプットや備忘録を兼ねて、記事を書いていきます。
最初のうちは、基礎的な内容を中心に考えています。

記事内容に誤りなどございましたら、指摘いただければ幸いです。

本日はRubyの条件分岐一回目について、書いていきたいと思います。

##if式
ある条件式が真の場合、if式の処理が実行されます。
ポイントとして「false」と「nil」は偽として判定され、それ以外は真と判定されるという点です。

“`ruby
if 条件式 then
# 条件式が真の場合の処理
end
“`
※thenは省略可能で、省略するのが一般的なようです。以後の項目は省略して記述します。

##else式
if式の条件式が偽の場合の処理を実行します。

“`ruby
if 条件式
# 条件式が真の場合の処理
else
# 条件式が偽の場合の処理
end
“`

##elsif式
elsif式を使うことでより多くの分岐を記述できます。

“`ruby
if 条件式1
# 条件式1が真の場合の処理
elsif 条件式2
# 条件式2が真の場合の処理
el

元記事を表示

rails s 実行時のCould not find a JavaScript runtime.のエラー対応方法

macOSのバージョンを上げてしまい、開発中のRailsアプリのローカル環境でローカルサーバーが起動出来なくなり、以下のようなエラーが発生したため、忘備録のために投稿します。

macOS Catalina バージョン 10.15.5
環境:Ruby,Ruby on Rails,JavaScript

## エラー内容
“`
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
“`

## 解決方法
[Node.js](https://nodejs.org/en/)の最新版をインストールする。
以上です。これだけでした。
![スクリーンショット 2020-06-22 3.55.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648523/c7c5f0a9-2926-a87c-fd

元記事を表示

Rails5.2から導入されたcredentials.yml.encの使い方

Rails5.2では新規アプリを作成した時にconfig/secrets.ymlが生成されず
代わりにconfig/credentials.yml.encが生成されるようになったみたいです。

既に本番環境などでRailsの古いバージョンで運用していてRails5.2にアップグレードする場合は
config/secrets.ymlではなく、config/credentials.yml.encの仕組みが使われるみたいです。

Rails5.2までは従来のconfig/secrets.ymlを使用するやり方などもあるみたいですが
Rails6アップグレードのことも考えconfig/credentials.yml.encを導入してみましたので
忘備録のために投稿します。

## 1. credentials.yml.encとmaster.keyの生成と設定
credentials.yml.encは直接エディタから編集する事はできないので、ターミナルでエディタを指定して作成、編集する。

“`
$ EDITOR=vim bundle exec credentials:edit
“`

ちな

元記事を表示

Rails5でECサイトを作る② ~Bootstrap4設定、Controller・アクション定義~

# はじめに
架空のベーカリーで買い物できるECサイトを作るシリーズ、[Rails5でECサイトを作る①](https://qiita.com/GreenFingers_tk/items/71e2fa8f5d8b7333d75a)の続きです。
必要なControllerとViewを揃え、アクションも定義だけ書いて、最低限のページ遷移ができるようにします。

# コードソース
https://github.com/Sn16799/bakeryFUMIZUKI

# Controller
コントローラを一気に作ります。Viewも伴うアクションは、ここでまとめて作ってしまいます。
### Customerサイト
“`
$ rails g controller addresses edit index
$ rails g controller cart_items index
$ rails g controller customers edit show withdraw
$ rails g controller genres index show
$ rails g controller

元記事を表示

Crystal というプログラミング言語について

# はじめに
まず Crystalとはなんぞや!ですが、簡単に言えばrubyの構文を使ってC言語みたいな実行速度でプログラムが動くように設計されたプログラミング言語です。今回は、このcrystalの魅力を簡単にご紹介できればと思い記事にいたしました。

# 実行速度の確認

まず、crystalを入れていない方は公式サイトから環境に合わせてインストールしてください。
その後で、適当なところにcrystalフォルダを作成します。
続けて、crystalフォルダの中にtest.crを作成し、中身を以下のように編集してください。

“`ruby
puts “Hello World!”
“`
見ていただくと分かるように、文字を表示するプログラムです。
これをrubyのように実行すると、実行速度は次の通りになります。

“`ruby
time crystal test.cr
→ Hello world!
→ crystal test.cr 0.85s user 0.27s system 1

元記事を表示

【Rails】FullCalendarを用いたスケジュール管理昨日の実装

# 目標
![ezgif.com-video-to-gif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/5b8f05ee-d679-7760-166e-21445aafcc26.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[Font Awesome導入](https://qiita.com/matsubishi5/items/a4c72f436e64ad106ee8)
・[ログイン機能実装](https://qiita.com/

元記事を表示

Rails migration

Railsのmigrationを触るのは初めてだったので、勉強備忘録のために簡単に書きとどめてみる。

# migrationについて
マイグレーションは、データベーススキーマの継続的な変更 を、統一的かつ簡単に行なうための便利な手法。

## migrationファイルを作成する

サンプルとしてCompanyテーブルを準備

| カラム名 | データ型 |
|:–|:–|
| id | integer |
| name | string |
| description | text |
| created_at | datetime |
| updated_at | datetime |

“`
$ rails g migration CrateCompany
“`

Active Recordにはマイグレーションの実行順序をファイル名のタイムスタンプでの表示を自動でやってくれる。
作成されたファイルは`db/migrate`ディレクトリに保存される。

作成されたファイル

“`ruby
class CrateCompany < ActiveRecord::Migr

元記事を表示

[Ruby] whileにおける条件式の評価の挙動について

## はじめに
 whileを使っていたときに初めての挙動に遭遇したのでメモしておきます。

## 環境
`ruby: 2.7.1`

## 現象
### 現象_A
“`ruby
a = 0

while
if a == 5
break
end
a += 1
end

puts a
# 実行結果: 0
“`

### 現象_B
“`ruby
b = 0

while
b += 1
if b == 5
break
end
end

puts b
# 実行結果: 5
“`

### 現象_C
“`ruby
c = 0

while c < 5 do c += 1 end puts c # 実行結果: 5 ``` ### 現象_D ```ruby d = 0 loop do if d == 5 break end d += 1 end puts d # 実行結果: 5 ``` ### 現象_E ```ruby e = 0 loop do e += 1 if e == 5 break en

元記事を表示

Your Ruby version is 2.4.6, but your Gemfile specified 2.6.4

マイグレーションファイルを作成しようとしたら、RubyのバージョンがGemfileで指定しているものと違うと言われ、実行できなかった。

“`
$ bin/rails g migration hoge
Your Ruby version is 2.4.6, but your Gemfile specified 2.6.4
“`

rbenvがインストールされていることを確認。

“`
$ which rbenv
/usr/local/bin/rbenv
“`

指定されたRubyのバージョンをインストール。

“`
$ rbenv install 2.6.4
Downloading openssl-1.1.1g.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
Installing openssl-1.1.1g…
Installed openssl-1.1.1g to /Users/tamu/.

元記事を表示

migrateファイルの変更(rails db:rollback)

こんにちは、tt_tsutsumiです。
今回はmigrateファイルの変更方法についてです。
こちらの記事が何方かのお役に立てると嬉しいです。

アプリケーション作成中にカラムの変更や追加を行った時に
普通のコードの書き方と違いが生まれたので困惑しました。
その際に自分が行った工程と流れの記載を致します。
##1. rails db:migrate:status

まずは現在作成しているアプリケーションのmigrateの稼働状況の確認を行いましょう。
コンソールにて下記コードを入力します。

“`
$ rails db:migrate:status

Status Migration ID Migration Name
————————————————–
up year/month/day Devise create users
up year/month/day Create spots

“`

※ year/month/dayの部分はご自身で作成された日付等が表示さ

元記事を表示

Ruby シンボルについて

rubyのシンボルについて学習したので、メモ。
シンボルは一見、文字列に見えるがコンピューターは整数として扱うので、
処理速度が向上するというメリットがある。

元記事を表示

JWTを用いたTokenAPIの実装(Rails)

#JWTとは
JSON Web Tokenの略称です。
今回はJWTを用いたTokenAPIをRailsに実装するのが目的なのでJWTについては簡単な説明だけにします。
TokenAPIは単純にemail,passwordでログインチェックを行って該当ユーザーが存在する時にそのユーザーのTokenを返すAPIです。
詳細内容については以下のリンクを参考にしてください。
https://openid-foundation-japan.github.io/draft-ietf-oauth-json-web-token-11.ja.html

##JWT構成
ヘッダ、ペイロード、署名の3つのパートになっててそれぞれBase64でエンコードされている。

“`:ヘッダ
{
“typ”:”JWT”,
“alg”:”HS256″
}
“`

“`:ペイロード
{
“sub”: “1234567890”,
“iss”: “John Doe”,
“aud”: “audience”,
“exp”: 1353604926
}
“`

“`:署名
HMACSHA256(

元記事を表示

acts-as-taggable-onを使って絞り込み機能を作る

## 環境
– ubuntu(WSL)
– rails 6.0.3

## 事前準備
以下の機能は作成済みとします。

– 投稿機能
– 投稿詳細
– gemのインストール
– テーブルの作成

## 手順
– タグの保存
– ビューで表示
– 絞り込みの実装

### タグの保存
タグをつけたいモデルに以下を追加。

“`micropost.rb
acts_as_taggable
“`
保存するためにストロングパラメータに以下を追加。
念のためcreateも載せておきます。

“`microposts_controller.rb
def create
@micropost = Micropost.new(micropost_params.merge(user_id: current_user.id))
if @micropost.save
redirect_to @micropost, flash:{success: “投稿しました”}
else
render :new
end
end

def show

元記事を表示

OTHERカテゴリの最新記事