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

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

bundle execが必要な理由

#なぜbundle execが必要なのか
“`
$bundle exec rails g controller user
“`
のようにすると、Gemfile.lockに記載されているものがrequireされる。

簡単に言うと、bundle exec をつけないで開発を行い、アップデートを行うという場合、動かなくなることがある。だから、bundle execを付けて開発を行うのが安牌なのかなという理解で、とりあえずは良いのかなと思いました。

参照
https://qiita.com/dawn_628/items/1821d4eef22b9f45eea8
この記事とかとても詳しく書かれていました。

元記事を表示

Gitっぽい自作コマンドラインツールのTab補完をするやつ

# はじめに

あー、ブラウザ立ち上げるのめんどくさい。またもやコマンドラインツールを作りたい熱がでてきた。なんかこんなやつ。

– `git` みたいに階層的にサブコマンドがあるやつ
– `TAB` で自動補完するやつ
– シェルが立ち上がる `REPL` っぽい雰囲気のやつ[^1]
– コマンド入力時にサーバの `REST API` コールするやつ
– 結果をいい感じに整形してだしてくれるやつ

今回は、コマンドを定義して `TAB` で保管できるようにするところ。いいサンプルがみつからないので、調べながら作ってみました[^2]

[^1]: REPL (Read-Eval-Print Loop) とは、入力・評価・出力のループのこと。 インタプリタにおいて、ユーザーとインタプリタが対話的にコード片を実行できるもの。個人的に Cisco っぽいやつ、とも呼んでいる。

[^2]: その昔、[自作コマンドラインツールでオートコンプリートする](https://qiita.com/narutaro/items/5b148b9c475d4200cb4f)のような記事を書きましたが、その

元記事を表示

Rubyで値の取得をしたい

###### Rubyでの値の取得の一覧をメモ書き

## 値の取得
### ■ 値を一行で取得する
`value = gets`

ただこのままだと出力するときに改行されてしまうので chompメソッドを使う
#### ■ 改行コードを切り落として取得する
`value = gets.chomp`

取得した数値を計算をしたいときは to_i メソッドが便利
#### ■ 値を数値として取得する
`value = gets.to_i`
>to_i メソッドは文字列を数値に変えることができる
>逆に数値を文字列に変えたいときは `to_s` メソッドを使う

#### ■ 一行から複数要素を取得
`a b c`
このように値を1行でスペース区切りに入力されたときは split メソッド
`value = gets.split(” “)`
>split メソッドを使うことで値を配列の形で取得できる
value[0] や value[1] のように配列と同じ形で中身を確認できる
#

##### `value = gets.chomp.split(” “)`
このように記述することで改行コ

元記事を表示

[git hub]gitignoreを使ってファイルを除外する

#概要
.gitignoreファイルを使い、指定のファイルをgit hubにアップしないようにする方法です。

rubyでbitcoinの自動売買システムを作成しています。ただ、bitflyerのAPI_KEYをgit hubにアップすると、セキュリティ上まずいです。色々調べると、.gitignoreファイルで対処可能であることが分かったので、記録しておこうと思います。

ruby on railsだと、環境変数でgit hubの管轄外にできることは知っていたのですが、今回は別の方法で。

#手順
手順はざっとこんな感じです。

1 .gitignoreファイルをアプリケーション直下に作成
2 git statusで状況確認
3 .gitignoreファイルに除外したいファイルを記述

###1.gitignoreファイルをアプリケーション直下に作成
アプリケーションの直下に「.gitignore」ファイルを作成します。
拡張子と勘違いされて、保存する前に警告が出ますが、「.gitignore.」で保存すればいいみたいです。それと合わせて、bitflyerのAPI_KEYを記述するk

元記事を表示

rails tutorial 本番環境でアカウント有効化について

##はじめに
プログラミング初学者です。
rails tutorial 11章の本番環境でアカウント有効化できなかった際の自分の解決策を記載します。

##環境

Ubuntu 18.04 LTS
ruby 2.7.1
Rails 6.0.3

##問題点
rails tutorial 11章の本番環境でアカウント有効化ができない。
メールは届くのにリンクにアクセスできない。
届いたURLを見てみると、、、
https://XXXXXXXX-XXXXXXXXXX-XXXXX.herokuapp.com%3E.herokuapp.com/account_activations/LE2XcAU-C4szTXa7Yx4zWA/edit?email=(設定したメールアドレス).com
なぜかherokuapp.comが二回でている。。
%3Eとかでている。。。(%3EはURLエンコードでの > のこと)

##解決策
production.rbに設定した

~~~
host = ‘.hero

元記事を表示

【Rails MySQL】heroku上のDBをリセットする方法

#内容
Railsで作成したheroku上のアプリのDBをリセットしようと“`heroku run rake db:reset“`をしたらエラーが起きてリセットできませんでした。

#行った作業
ターミナルに表示されたエラー文ではこう書かれていました。

“`
rake aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your ‘production’ database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
“`
翻訳すると、
“`「本番」データベースに対して破壊的なアクションを実行しようとしています。
続行する場合は、環境変数を指定して同じコマンドを実行します。
DISABLE_DATABASE_EN

元記事を表示

Ruby/Rust 連携 (4) Rutie で数値計算

* [Ruby/Rust 連携 (1) 目的](https://qiita.com/scivola/items/1f51a294c86a70aa78aa)
* [Ruby/Rust 連携 (2) 手段](https://qiita.com/scivola/items/d6de19cd985a5cd27f7e)
* [Ruby/Rust 連携 (3) FFI で数値計算](https://qiita.com/scivola/items/5ab8c6ba0b81a63d976e)
* Ruby/Rust 連携 (4) Rutie で数値計算

# はじめに

前回は FFI 経由で

“`math
\sqrt{ x^2 + y^2 + z^2 }
“`

を計算する Rust の関数を Ruby から呼んでみた。
意外と簡単に実装できることが分かったのは収穫だったが,肝心の速度はというと,Ruby で

“`rb
Math.sqrt(x * x + y * y + z * z)
“`

を計算するよりはるかに遅い,という残念なものだった。
原因はよく分からないが,FFI を経由す

元記事を表示

【Ruby on Rails】gem refileの保存先変更※備忘録

gemのrefileを使用していて、
つまずいたため、備忘録として残します。
※本来の方法ではないかもしれないため、参考程度に見ていただければと思います。
# 開発環境
ruby 2.5.7
Rails 5.2.4.3
OS: macOS Catalina

# refileの保存先変更
## 何もしていない時の保存先

tmp/uploads/store
この配下にあるものの、tmp=temporaryの字のごとく、
一時的に保存される場所です。

## 変更したい保存先
public/uploads配下に保存したい場合、
config/initializers配下にrefile.rbを作成。

“`:config/initializers/refile.rb
Refile.backends[‘store’] = Refile::Backend::FileSystem.new(‘public/uploads/’)
“`
このようにすればpublic/uploads配下に保存可能。

元記事を表示

【Rails】サイトのRSSを読み込んで、内容をフロントに返す

RSSとは

Rich Site Summaryの略で、充実したサイトの要約という意味になる。

主な特徴は、

– 内容情報のメタデータ化にRDFを使う。
– それの情報をXML言語で記述する。

|Webサイトの要素|マークアップ言語
|:–|:–
|Webページ|HTML
|RSS|XML

メタデータ

データベースでいうカラムのこと

RDF

メタデータを統一するための規格。データベースでいうモデル?

マークアップ言語

<>で表した要素を使って、データの構造を示す言語

#gemを追加

“`ruby:Gemfile
gem ‘feedjira’
gem ‘httparty’
“`

“`
$ bundle install
“`

##対象RSSを、Railsで処理してクライアントに送るまでの流れ

1. RSSをrailsに送る
2

元記事を表示

クラス継承について。

クラス継承の記述方法

“`ruby
class Apple < Fruit #子クラス #親クラス end ``` 上記の場合、Fruitが親クラス、Appleが子クラスとなります。 ```ruby class Fruit def initialize(fruit_name, fruit_color)#(第一引数, 第二引数)仮引数 #initializeメソッドはインスタンス生成時にnewメソッド実行と同時に処理が行われます。呼び出しのための新たな記述はいりません。 @fruit_name = fruit_name #@fruit_nameはインスタンス変数と呼ばれるものです。 @fruit_color = fruit_color end def name puts "これは#{@fruit_name}です。"#{値}で値の展開を行なっています。 end # def color # puts "#{@fruit_color}色です。" # end end class Apple

元記事を表示

DNAやタンパク質の立体構造をRubyで表示すっゾ – GR.rbの場合

## はじめに

タンパク質の立体構造をRubyで表示するということは古来から人類の夢であり、以前よりいろいろな試みが行われてきました。

* [タンパク質の立体構造を A-Frame で](https://qiita.com/scivola/items/16889866458ebb701fde)
* [タンパク質の立体構造をSketchUpでモデル化 その1](https://qiita.com/yoho/items/1e15bbd4e3a7c4c7ff69)

この記事では、私がメンテナンスしているグラフ描出ツール[GR.rb](https://github.com/red-data-tools/GR.rb)を利用してタンパク質などの立体構造を表示する方法を説明します。

* [Rubyでグラフを描画するツール GR.rb の紹介](https://qiita.com/kojix2/items/456259f40d5563005cd1)

## GR.rb で xyz ファイルを表示しよう

![video.gif](https://qiita-image-store.s3.ap-

元記事を表示

【Ruby】Date、Time、Datetimeクラスの基本

– 日時、時間を扱える。Datetimeは両方、Dateは日付、Timeは時間を管理。
– うるう年、1ヶ月ごとの日数、曜日などの管理も可能。
– Rails独自の便利なメソッドも用意されてる。より可読性、安全性の高い。

# Date クラス(日付)
– 日付を扱うクラス。
– `require “date”` が必要。

“`rb:例)Dateクラスの使い方
require “date” # 外部ファイルを参照し、クラスを取得するので、必須

# today メソッド
today = Date.today # 今日
today – 1 # 昨日
today.year # 年
today.mon # 月
today.mday # 日
today.wday # 曜日
today.strftime(‘%a’) # “Sat”

# 日付が

元記事を表示

アロハな男のエンジニア成長期

初めまして!

プログラミングに関するアウトプット用にこちらのブログ開設しました?

軽く自己紹介を…
26歳のディズニー・ハワイ大好きな関西人男性です!
夢はディズニーみたいに利用した人に満足・喜びを感じてもらえるようなアプリを開発できる人材になりたいと思います!

これからどうか、よろしくお願いします?

最後にハワイのディズニーリゾートの写真を1枚だけでも…?!

![IMG_8484.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699622/ff46765d-ca9f-821b-c013-0b30ed9a8726.jpeg)

元記事を表示

ツイート表示に必要な知識

どうも、ニムです。

本日は、<ツイートを表示する>にあたって必要な知識を学びました。

ツイートをの表示を行なっていく際に、データの取り扱いを行います。
取り扱いの基本処理をまとめてCRUDと呼ぶ。
RailsではCRUDを7つのアクションに分割して、処理を実現する。

■ CRUDとは、
〜アプリケーションのデータの取り扱いに関して、基本的な処理の頭文字を並べたものです。
アプリケーションの機能は、この4つの処理を組み合わせながら実装します。
C :Create (生成)
R :Read  (読み取り)
U :Update (更新)
D :Delete (削除)

■ 7つのアクションとは、
〜CRUDを実現するにためには、それぞれの処理を記述する必要があります。
Railsには、それらのアクションの設定が慣習的に決められており、
様々なアクションが存在します。
index : 一覧表示
show : 詳細表示
new : 生成
create : 保存
edit : 編集
update : 更新
destroy : 削除

これらの7つのアクションのルー

元記事を表示

【Firestore】Rubyでコレクションをwhere条件で抽出してレコード削除

## 概要
RubyでFirestoreのAPIを使用する際、指定したコレクションのうちwhere条件に当てはまるものだけ削除したい場合どうすればいいのか、というのをまとめました。

## 前提など
* RubyでFirestoreのAPIを使用するため環境設定やクエリの投げ方などは、[こちら](https://googleapis.dev/ruby/google-cloud-firestore/latest/file.AUTHENTICATION.html)のドキュメントや[RailsからFirestoreをいじりたい](https://qiita.com/drafts/7bef4408cb525cfe822d/edit)を参考にしてます。
* 今回はbatchの仕組みを使用します。batchでの更新は500件が限界だそうなので、その点も考慮してみます。JavaScriptでの実装ですが[FirestoreでCollectionを削除する](https://qiita.com/superman9387/items/e9e258d92b2fab627a51)が参考になります。
* Ru

元記事を表示

複数のテーブルに一度の入力で保存する方法

【概要】◀︎ここから先に書く
—————————————-
1.結論

2.Formオブジェクトとは

3.使用方法

4.ここから学んだこと

1.結論
—————————————-
Formオブジェクトを使う!

2.Formオブジェクトとは
—————————————-
複数のテーブルに1度に保存できる方法です!
本来であれば保存したいテーブル分のコントローラー、モデルmigrateファイルを作らなければなりません。この場合ですと、モデルとある一つのファイルをつくるだけで簡単にできます!

3.使用方法
—————————————-
❶appにformオブジェクト専用のフォルダとその中にファイルをつくります。そして以下のように記述します。今回は購入された情報と住所をDBに反映させたい

元記事を表示

(ギリ)20代の地方公務員がRailsチュートリアルに取り組みます【第3章】

##前提
・Railsチュートリアルは第4版
・今回の学習は3周目(9章以降は2周目)
・著者はProgate一通りやったぐらいの初学者
##基本方針
・読んだら分かることは端折る。
・意味がわからない用語は調べてまとめる(記事最下段・用語集)。
・理解できない内容を掘り下げる。
・演習はすべて取り組む。
・コードコピペは極力しない。

いよいよメインのsample_appが始まる第3章。
この章から学習のお供に、本日のBGM入れていきます。気分転換にどうぞ。
[羊文学 “人間だった”](https://www.youtube.com/watch?v=16jL0eThQmM)

 
####【3.1 セットアップ 演習】
 gemファイルのインストールでさっそく赤字エラー吐きますが、bundle updateして再度インストールすれば解決します。
そして、herokuへデプロイするところでまたエラー。**Precompiling assets failed**の赤文字が。プリコンパイルだから、コンパイルする前の段階でエラー?ログを辿ってエラー吐いてる箇所を調べても**NoMethod

元記事を表示

複数のモデルが絡んだ検索条件の作り方

今回は、 itemsテーブルに保存された商品名(name)と商品説明(description)
と一緒に、tagsテーブルに保存されたタグ名(tag _name)の値の中からキーワード
検索ができる機能の実装を作成したい。
(itemsテーブルとtagsテーブルは多対多の関係で中間テーブルを用いてアソシエーションを組んでいる。)

1 itemモデルに自作のメソッドを作り、それぞれのテーブルからの検索条件を定義し変数に代入(@itemsと@tags)
2 空の配列を作成し変数に代入(@test)
3 タグテーブルで検索条件に引っかかったデータのidとアソシエーションで結びついている商品をeachメソッドにかけて一つ一つ取得し、配列に追加(@test <<@tag _item) 4 最後に@itemsも配列に追加し、明示的に返り値としてddデータをparamsに送信(@test) ```ruby:item.rb def self.item_search(search) if search != "" @items = Item.where('name LIKE(?)

元記事を表示

Yay! I’m on Heroku!

# はじめに
[前回の記事 – Qiita](https://qiita.com/superrino130/items/7b574df107251914cc55)に味を占めたので、外部公開にそなえ`Heroku`に簡単なアプリを登録してみました。

アプリの内容は、@EightTreesCoffee さんの[この記事 – Qitta](https://qiita.com/EightTreesCoffee/items/d9bc07316e5b2f6900c2)を~~パクリ~~参照させていただきました。

# 完成画面
![20200905b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/db9a789e-03b8-463e-56e0-4a8459cd9f48.png)
[heroku アプリ](https://vast-bastion-88155.herokuapp.com/)
# heroku インストール
“`
C:\Users\user>npm install -g heroku

元記事を表示

ランダムな文字列を生成してみた

## はじめに
ランダムな文字列(今回は6文字の英小文字)を生成するプログラムをいくつかの言語で実装しました。
記事の作成者のスキルは、素人がほぼ独学でプログラミングを学んだ程度です。
記事中にコードの記述がありますが、おかしい箇所やアンチパターンなどありましたらコメントいただけると幸いです。

## 目次
1. [Herokuでアプリ名を自前にしたかった](#herokuでアプリ名を自前にしたかった)
1. [実装](#実装)
1. [C](#1-c言語)
2. [C++](#2-c)
3. [Python](#3-python)
4. [Ruby](#4-ruby)
5. [PHP](#5-php)
6. [Node.js](#6-nodejs)
7. [Swift](#7-swift)
8. [シェルスクリプト](#8-シェルスクリプト)
9. [JavaScript(HTML埋め込み)](#9-javascripthtml埋め込み)
10. [実装まとめ](#10-実装まとめ)
10. [結論](#結論)
11. [終わりに](#終わりに)

## Hero

元記事を表示

OTHERカテゴリの最新記事