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

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

heroku で Active Storage を通して GCS に接続時 Neither PUB key nor PRIV key: nested asn1 error が発生する

*ローカル環境では正しく接続できている前提です

### ローカルで動いてもherokuで動かない
ローカル環境では正常に接続できていてもherokuにデプロイすると
`Neither PUB key nor PRIV key: nested asn1 error`
が発生する
エラー時のstorage.yml

“`ruby:storage.yml
google:
service: GCS
credentials:
type: “service_account”
project_id: “”
private_key_id: “<%= Rails.application.credentials.private_key_id %>”
private_key: “<%= Rails.application.credentials.private_key %>”
client_email: “”
client_id: “”
auth_uri: “”
token_uri: “”
auth_provider_x5

元記事を表示

あなたの日本語をRails語に翻訳する辞書 データベース編

#はじめに
TECH CAMPというプログラミング教室に40日ほど通った添野です。
本日はRailsで重要な概念「**データベース**」という概念を説明していきます。

皆さんはRailsにおける「**データベース**」が何なのか説明できるでしょうか?
この記事を読めば、**かなり具体的**に説明できるようになります。

※MySQLの使用を前提に記事を書いています

#結論
データベースとは「**配列に入った配列に入ったハッシュ**」です。
わかりやすく説明するため、**徐々に進化**させて説明していきます。

**値**
雑魚敵。ドラクエでいう「スライム」です。
最終的に**ビューで表示したい**のはこいつです。

“`
りんご
“`

**配列**
雑魚敵の集合体です。ドラクエでいう「キングスライム」です。

“`
[りんご , ゴリラ , ラッパ]

簡略化すると:
[A,B,C]
“`

**配列に入った配列**
キングスライムの集合体です。キングスライムって進化すんの・・・?
Rubyというゲームの場合は無限に進化します。

“`
[ [りんご ,

元記事を表示

vistaでkicad その3

#概要

vistaでkicadやってみた。
sketchupで、vrml書いて、kicadで読み込んで見た。

#環境

windows vista 32bit
kicad 4.0.4
sketchup 8

#sketchupでbox書く。

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/454e2d8a-d4cd-7a96-55e9-6166a057f044.png)

#skp_to_vrml.rbで出力。

“`
#VRML V2.0 utf8
Shape {
geometry IndexedFaceSet {
coord Coordinate {
point [
1.000000 0.000000 -1.000000 ,
0.000000 0.000000 -0.000000 ,
0.000000 0.000000 -1.000000 ,
0.000000 0.000000 -0.000000

元記事を表示

Kinx 実現技術 – Fiber

# Fiber

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。作ったものの紹介だけではなく実現のために使った技術を紹介していくのも貢献。その道の人には当たり前でも、そうでない人にも興味をもって貰えるかもしれない。

前回のテーマは [Garbage Collection](https://qiita.com/Kray-G/items/1ee8710d2a70a037f861)。今回のテーマは Fiber。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-

元記事を表示

VS codeの初期設定とRuby on Railsの環境設定

初期設定につまづくとかなり時間をロスするので、まとめることにしました
# VSCodeの初期設定
## VSCode(Visual Studio Code)をインストール
1. [VSCodeダウンロードページを開く](https://code.visualstudio.com/)
![スクリーンショット 2020-03-31 5.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/676793f7-9452-c1e2-879b-3cbe7ea9c825.png)
2. Download for Macをクリックして、ダウンロードを完了します

## VS Codeに拡張機能を追加

### 追加する拡張機能

– Japanese Language Pack for Visual Studio Code →日本語表記にします。

![スクリーンショット 2020-03-31 5.56.45.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

[devise]現在ログインしているユーザ名が表示されない場合の解決策

#環境
| |バージョン|
|:—————-:|:—————–:|
|ruby |2.6.5|
|rails |5.2.4.2|
|devise |4.7.1|

# 目標
現在ログインしているユーザの名前を表示させたい。

# 問題
[@yasuno0327](https://qiita.com/yasuno0327)氏が公開していた[devise にusername カラムを追加し、usernameを登録できるようにする。](https://qiita.com/yasuno0327/items/ff17ddb6a4167fc6b471)を参考にして実装したところ以下のようなエラーを吐いた。

“`:Error
undefined method `username’ for nil:NilClass

(意訳)
NilClassのnilオブジェクトに`username`メソッドは定義されてないよ
“`
# 解決策
“`:_current_username.html.erb
<% if us

元記事を表示

Typeformのかっこいい入力フォームを自作アプリに実装した話

# 概要
非エンジニアビジネス職(カスタマーサクセス職)の[@yuta_maruyama](https://twitter.com/yuta_maruyama)が、動的でイケてるかっこよい入力フォームを自力で作ろうと思ったけれど難易度が高すぎたので米国産SaaSのTypeformを組み込んでWebhookで連携しようとした話です。
ちなみにカスタマーサクセスの話は一切なく、大好きなクラフトビールのテイスティングノートアプリを作ろうとしている中での話。

## 環境
– Ruby 2.6.2
– Rails 6.0
– heroku

## 作ろうとしているもの
[BEER BASH](https://beerbash.herokuapp.com/)

– ビールのテイスティングノートアプリ
– 飲んだビールに関する評価やコメントをnoteとして残す
– Rails練習用なので見てくれは勘弁
– 「ノートを残す煩わしさ」がないことをサービスのユニークな価値にしたかったのでそこにはこだわりたい

## [Typeform](https://www.typeform.com/)とは
– フォ

元記事を表示

Clean Codeを読んで品質の高いコードを定義してみる

# はじめに

本編は[こちら](#関数)から飛んでください

## なぜこの記事を書こうと考えたか
「拡張性・品質の良いコードって何?」と思い、
言語化して見ようと考えました :)

## この記事で解説すること
– キレイな[関数](#関数)について
– キレイな[クラス](#クラス)について

## この記事を読んだ結果どうなるか
– 実装の際に気をつけると良い観点を身につける
– コードレビューの観点を身につける
– “*ちょっと*”良いエンジニアになった気になる

# 関数
## 小さいこと!
関数の第一原則は、「小さくせよ」。第二原則は、「さらに小さくせよ」。
小さな関数が優れている論文などはありませんが、
異論を唱える方は多くないはずです。

“`ruby:1-1.rb
# メール送信風プログラム

#
# メールを送信するために必要な処理を実行する
#
def mail
# Toに入るアドレスをget_to_address関数から取得する
to_address = get_to_adress

# Fromに入るアドレスをget_from_address

元記事を表示

renderの処理について

# 本記事を書いた経緯
私はエンジニアになるために、プログラミングスクールにて学習を行なっています。
そこで、renderの処理について学び、備忘録として残したい使い方がありましたので本記事を書くに至りました。

# renderの使い方
下記の[A]と[B]は書き方に違いがあれど、どちらも描画されるビューは全く同じです。
しかしながら、ある理由により、[A][B]いずれかの記述の方が好まれます。より良い記述は[A][B]はどちらでしょうか…?

“`言語:[A]の場合
@users = User.all
@users.each do |user|
= render ‘user’, user: user

“`
“`言語:[B]の場合
@users = User.all
= render ‘user’, users: @users

“`
良い記述は[B]となります。
[B]の方が好まれます。
理由は、[B]の方が処理が速いからです。

[A]では、@usersにeachを使用して、user一人一人に対してrenderを実行しています。
この書き方だと、userが1

元記事を表示

『Q22 百マス計算で最小のマスをたどると?』もっとプログラマ脳を鍛える数学パズル

# はじめに
アルゴリズムの勉強に、*[もっとプログラマ脳を鍛える数学パズル アルゴリズムが脳にしみ込む70問](https://www.amazon.co.jp/dp/B078LMFXXC)* を解いています。
経路問題がありましたので、*Perl* で実装してみました。
# 苦労した所
最小値のマスを取り出すため、2次元配列 *cost[r][c]* の値でソートし 配列 *que* に格納された (r, c) 座標を返します。

“`ruby.rb
que.sort_by!{|r, c| cost[r][c]}
r, c = que.shift
“`
“`javascript.js
que.sort(function(a, b) {
return cost[a[0]][a[1]] < cost[b[0]][b[1]]; } var r, c; [r, c] = que.shift(); ``` 座標の受け渡しについて、後発の言語はスマートな感じがします。 特に、*Ruby* は、スッキリしていますね。 ```perl.pl @que =

元記事を表示

bundle installのエラー解決法(can’t find gem bundler (>= 0.a) with executable bundler)

# エラー内容と状況
エラー内容はタイトルの通り。bundle installしたとき、`can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)`と怒られてしまった。
そもそもこの時はgithubのリモートからpullして、rails sをした時に、`bundle install`してくださ〜いってエラーから始まっています。チーム開発でよくある事象かと思い、自分も何回か直面してその都度調べていたので、そろそろ自分でまとめようと思います!

# 開発環境
– ruby 2.5.1p57
– Rails 5.2.4.1

# bundlerとは
そもそもbundlerとは何だったのかを復習しましょう!
Railsアプリケーションにおいては非常に複雑なgemの管理をする必要があります。これらのgemを管理するのが`bundler`というgemになります。
管理するものが無いのでbundle installできないってことだったのですね。

ターミナルでbundlerをインストールす

元記事を表示

DBから取得したデータの中身を取得する方法 Ruby on Rails

# MySQLからデータを取得してきた
whereメソッドを使って、特定条件下で検索に該当するクエリを発行させると、条件に当てはまったレコード全てを引っ張ってくる。

“`log_in.rb
yesterday_time = Time.now.yesterday
log_in_collection = LogIn.all #LogInというモデルを作成してあり、そこからデータを全て引っこ抜いている
log_in_list = log_in_collection.where(“loged_in_at >= ?”, yesterday_time)
“`

そうすると、log_in_listをpメソッドで出力すると、

“`
#]>
“`

こんな感じのデータが取

元記事を表示

Ruby on Rails とかで docker 環境なのに #VSCode で ruby-rubocop 拡張を有効にするにはどうすれば良いのか? ( #Rails #Ruby )

# ruby-rubocop

![image](https://user-images.githubusercontent.com/13635059/77843391-db566100-71d7-11ea-8e92-243087a89fde.png)

# エラー

なんかいろいろと言われますけれど。

![image](https://user-images.githubusercontent.com/13635059/77843405-03de5b00-71d8-11ea-9f64-bc8fc0973ad2.png)
![image](https://user-images.githubusercontent.com/13635059/77843418-1789c180-71d8-11ea-9f91-f898b22f598d.png)

# 解決法

local に同じバージョンの ruby + rubocop 関連で必要なgemをインストーするれば動くっぽい

“`
gem install rubocop
gem install rubocop-performance
ge

元記事を表示

vistaでkicad その2

#概要

vistaでkicadやってみた。
sketchupで、dxf書いて、kicadで読み込んで見た。

#環境

windows vista 32bit
kicad 4.0.4
sketchup 8

#sketchupでbox書く。

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/454e2d8a-d4cd-7a96-55e9-6166a057f044.png)

#skp_to_dxf.rbでdxfを出力。

“`
0
SECTION
2
ENTITIES
0
3DFACE
8
GROUP0
10
2.54
20
2.54
30
0.0
11
0.0
21
0.0
31
0.0
12
0.0
22
2.54
32
0.0
13
0.0
23
2.54
33
0.0
70
1
0
3DFACE
8
GROUP0
10
0.0
20
0.0
30
0.0
11
2.54
21
2.54
31
0.0
12
2.54
22
0.0
32
0.0
13

元記事を表示

初めてのBitbucket

rails チュートリアルを進めるにあたって、bitbucketを一番初めに使用するときにわからないことがあって苦しんだためメモ

・cloud9(aws)環境で実施
・アカウント作成は省略
##公開鍵の作成
“`sh:console
cat ~/.ssh/id_rsa.pub
“`
上記のコマンド入力で公開鍵を所持しているか確認できます。所持していない場合には`No such file or directory`と表示されます。
鍵を所持していない場合は

“`sh:console
cd ~/.ssh #sshフォルダに移動
ssh-keygen -t rsa -C saber@example.com # 自分のメールアドレス入力
“`
Entキー押すと色々と出てくるが特にいじる必要ないのでそのままEntキー何回か押して鍵を作成。鍵を作成した後に先ほどの

“`sh:console
cat ~/.ssh/id_rsa.pub
“`
を実行して鍵を表示させます。
##公開鍵の追加
bitbucketにログイン後、
ユーザーアイコン
  ↓
Bitbucket settin

元記事を表示

環境変数管理の便利ツール

# 環境変数管理

## 背景
秘密鍵を使うこともあり,
sample用の`.env.sample`と開発用の`.env`ファイルを分けている

`.env.sample` をコミットに残すため、こちらを正として`.env`を管理したい

## インストール方法

“`
go get github.com/locona/envdef/cmd/envdef
“`

## Usage

プロジェクトのルートにある.envファイルにアプリケーション構成を追加します。

“`
S3_BUCKET=YOURS3BUCKET
SECRET_KEY=YOURSECRETKEYGOESHERE
“`

プロジェクトのルートにある`.env.sample`ファイル

“`
S3_BUCKET=YOURS3BUCKET
SECRET_KEY=YOURSECRETKEYGOESHERE
REGION=REGION
“`

次に実行します

“`
envdef
“`

その結果、`.env.new`ファイルが作成されました

“`
REGION=REGION
S3_BUCKET=YOURS3

元記事を表示

active_interaction でアプリケーション固有のビジネスロジックを管理する

# はじめに

active_interaction というビジネスロジックの秩序を提供してくれる gem があります。
これは Rails における Fat Model や Fat Controller にならない為の一つの解になり得ると注目しています。

active_interaction をもっと上手く使いこなそうという考えから、使い方をまとめました。
README の部分的な翻訳 + 理解しやすいように加筆となっています。

> Active Interactionは、アプリケーション固有のビジネスロジックを管理します。
> これはRubyのコマンドパターンを実装したものです。

> Active Interactionは、ビジネス・ロジックを配置する場所を提供します。
> また、入力が期待通りのものであるかどうかを検証することで、より安全なコードを書くことができます。ActiveModel が名詞を扱う場合、Active Interaction は動詞を扱います。

## なぜ gem を使うの?

[Rails: Service Objectはもっと使われてもいい(翻訳)

元記事を表示

Rails6 のちょい足しな新機能を試す 126(upsert_all bug fix編)

# はじめに

Rails 6 に追加された新機能を試す第126段。 今回は、`upsert_all bug fix` 編です。
Rails 6.0.0 では、 query のキャッシュが有効になっている状態で、 `upsert_all` を実行した後、キャッシュがクリアされないというバグがありました。

Rails 6.0.1 以降では修正されています。

Ruby 2.6.5, Rails 6.0.2.2, Rails 6.0.1, Rails 6.0.0 で確認しました。

“`shell
$ rails –version
Rails 6.0.2.2
“`

今回は、 スクリプトを作成して確認していきます。

# Rails プロジェクトを作る

Rails プロジェクトを新たに作成します。

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

# User モデルを作成する

User モデルを作成します。

“`shell
$ bin/rails g model User name
“`

# スクリ

元記事を表示

has_secure_passwordについて

#はじめに
パスワードを実装してみたのでメモ
userモデルにパスワードを実装していきます
##1.has_secure_password
userモデルに

“`ruby:user.rb
class User < ApplicationRecord has_secure_password end ``` と追加することで (1).セキュアにハッシュ化したパスワードを、データベース内の`password_digest`という属性に保存できるようになる。(**条件あり**) (2).2つのペアの仮想的な属性 (`password`と`password_confirmation`) が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される。 (3).`authenticate`メソッドが使えるようになる (引数の文字列がパスワードと一致するとUserオブジェクトを、間違っているとfalseを返すメソッド) 。 この3つの機能が使えるようになります。順番に解説していきます。 ###(1) ここでいうセキュアとは安全という意味です。設定したパスワードを暗号化(ハッシ

元記事を表示

dockerでカラムの変更ができないエラー

docker-composeで自作アプリのテーブルをいじっていたらこんなエラーに遭遇しました。

“`
$ docker-compose run –rm app rails g migration rename_star_column_to_topics
Starting sakelog_db_1 … done
Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused “exec: \”rails\”: executable file not found in $PATH”: unknown
“`

再起動してみたり、appをdbに書き換えてみたり、色々試しましたが解決できず。

でも解決法は意外と単純でした。

“`
$ docker-compose run –rm app bundle exec rails g migration rename_star_column_to_topics

元記事を表示

OTHERカテゴリの最新記事