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

Ruby関連のことを調べてみた2020年01月08日
目次

seedを使わずにdb:migrateで初期データ投入

# `rails db:seed`はマスターデータ投入でちょっと面倒だった

マスターデータは初回投入後もちょいちょい追加することがある。
`rails db:seed`は差分更新みたいなことはできないらしい。(seed_fuとか使わない限り)
`rails db:migrate:reset`で全削除=>再登録はやりたくない。

# `rails db:migrate`を使えばいい

[Railsの初期データを投入する方法](https://qiita.com/mHadate/items/bc698ce5c126c932487e)を参考にさせてもらった。

`rails db:rollback`でやり直したかったので、`up`と`down`で実装してみた。
`change`だとロールバック時にデータ削除ではなく、もう一度挿入されてしまう。

“`rb:db/migrate/xxxxxxxxx_insert_hoge.rb
class InsertHoge < ActiveRecord::Migration[6.0] def insert_data [ { n

元記事を表示

VSCodeでRubyのデバッグをする際にエンコーディングエラーが発生する

[Visual Studio CodeによるRubyのデバッグ](https://dev.classmethod.jp/tool/visual-studio-code-ruby-debug/)

Mac環境でこちらの記事などを参考にVSCodeでRubyのデバッグをしようとすると以下のエラーが発生しました。

“`
CSV::MalformedCSVError: Invalid byte sequence in US-ASCII in line 1.
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/2.6.0/csv/parser.rb:313:in `rescue in parse’
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/2.6.0/csv/parser.rb:296:in `parse’
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/2.6.0/csv.rb:1236:in `each’
/Users/hoge/.rbenv/version

元記事を表示

rails環境構築 gem install sqlite3 エラー

railsを始めようと思い、下記サイトを参考にrailsのインストールを試みたところ、
rails new app名を実行したところで下記エラーがでました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561469/f2d97d3e-d470-0dc1-5f24-02c28e392401.png)

sqlite3のgemがないのがエラーの原因だと思ったため、gem listを実行してみると、確かにsqlite3がありませんでした。

なのでgem install sqlite3でsqlite3をインストールしようとしたところ、次のエラーがでました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561469/9ce97471-072e-a177-858f-3d8cd82e8aef.

元記事を表示

【初心者向け】Rubyで超簡単な本紹介アプリを作ってみる(日付と時間自動付与)

#require “date”を使って、投稿に今現在の日時を自動表示させる

こちらは、昨日の記事を参考に作成しています。
https://qiita.com/pontarou194/items/37a9c63fe617e3244e19

#3行で日時を表示させることができる
“`
require “date”
time = DateTime.now
print(time.hour,”時”,time.min,”分”,time.sec,”秒\n”)
“`

putsではなく、printを使用しています。

【理由】
・putsだと改行される。
・printは改行されない
・\nで改行していますが、あとで理由がわかります。

※\nのバックスラッシュは、Macの方はalt+¥でバックスラッシュができます。違ったらスイマセン。

#実際にコードを書いてみる

“`
puts “本の名前を登録”
title= gets.chomp
puts “著者を登録”
author = gets.chomp
puts “本のカテゴリを入力してください”
categorys = [“小

元記事を表示

Sinatraで接続元IPを表示する

Sinatraで接続元IPを表示する。

get ‘/’ do
“Your IP address is #{request.ip}”
end

元記事を表示

[Rails]本日のエラー

今度作業する時に、あれ?過去にも同じエラーが起こったことあるぞ!!となった時用に記事として保管しておくのが目的です。
なので、個人的に使用する記事なので投稿内容は大雑把にまとめます。

記事の流れ
1.なんの作業中にエラーが起きたのか
2.エラーの内容
3.対処法
4.原因

以上の流れで書いていきます。

#1.dbをリセットしようとした時

“`ターミナル.
rake db:migrate:reset
“`

#2.エラー内容

“`
ActiveRecord::NoEnvironmentInSchemaError:

Environment data not found in the schema. To resolve this issue, run:

bin/rails db:environment:set RAILS_ENV=development

Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments
(See full trace by

元記事を表示

文字列とシンボルと双方の違いについて

# はじめに
学習メモです。
今回扱う対象は以下となります。

– 文字列(リテラル)
– シンボル(リテラル)

# 文字列から数値へ変換
最初の文字列が整数に変換できない場合は0を返します。

“`ruby
“100”.to_i #=> 100

“1.5”.to_f #=> 1.5

“7/2”.to_r #=> (7/2) Rationalオブジェクトに変換

“1+2i”.to_c #=> (1+2i) Complexオブジェクトに変換

“123ab45”.to_i #=> 123 aの前までが変換対象

“123ab45”.to_f #=> 123.0 aの前までが変換対象

“2.3”.to_i #=> 2 ピリオドの前までが変換対象

“3.5.6”.to_f #=> 3.5 2番目のピリオドの前までが変換対象

“a123”.to_i #=> 0
“`

# バックスラッシュ記法

| 指定する内容  | 生成される文字 |
|:—————–:|:————

元記事を表示

Lambda+API GatewayのレスポンスをJSONとしてパース出来ない

# はじめに

「[内閣府の祝日CSV](https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html)をLambda上でJSON形式に加工して、API Gateway経由で使えるようにする」というプログラムを考えたのですが、API GatewayのレスポンスがJSONとして正しくパース出来ないことが分かりました。

Lambda上で動いているRubyプログラムは単体のスクリプトとして問題なく動作することを既に確認していましたが、原因が分かるまで少し時間がかかったので、その記録をまとめてみました。

# 使用した環境

* Lambda(Ruby)
* API Gateway

# 正しく動作しなかったコード

* `JSON.pretty_generate`や`JSON.generate`、`JSON.dump`などでシリアライズした結果を返すと、**API Gatewayを通して取得したレスポンスの前後に不要なダブルクォート(”)が付いてしまい、JSONとしてパース出来ませんでした。**
* その後にさらに調べてみると、API Gate

元記事を表示

初心者によるプログラミング学習ログ 206日目

#100日チャレンジの206日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。

100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。

206日目は

Dockerでalpineイメージ使用時に発生したstandard_init_linux.go:211: exec user process caused “no such file or directory” を解決

# alpineイメージ使用時に発生するstandard_init_linux.go:211: exec user process caused “no such file or directory” を解決
Docker X Rails6 X MySQL8で環境構築する際に、初めてalpineイメージを使用するとエラーに出会いました。
alpineはLinuxディストリビューションの1つで、CentOSやUbuntuよりも軽量なためDockerイメージのサイズを小さくすることができます。

## 各種設定
“`:Dockerfile
FROM ruby:2.7.0-alpine
ENV LANG C.UTF-8

RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock

RUN apk update -qq && apk add –no-cache yarn build-base tzdata libxml2-dev mariadb-dev

元記事を表示

herokuへデプロイ後、We’re sorry, but something went wrong.

#We’re sorry, but something went wrong.
herokuへデプロイ後にブラウザで表示されるました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536974/a567c114-d89a-b7a8-0517-5aa7d037922e.png)

#原因
色々調べたところ
###・データベースの変更が更新されていない。
###・モデルにアクセスする処理を行っているのに、heroku上のデータベースをリセットを行っていない。

これは、デプロイ自体はできているみたい。
このパターンが多いみたいです。
僕もそうでした。

#解決法
“`
$heroku run rake db:migrate
“`
↑これで、heroku上のデータベースを更新

いけました。。一安心です

元記事を表示

#Ruby + #AWS S3 / publish presigned url ( temporary access URL ) / example codes

# Code

“`rb
# https://www.rubydoc.info/github/aws/aws-sdk-ruby/Aws%2FS3%2FObject:presigned_url

require ‘aws-sdk-s3’

credentials = Aws::Credentials.new(ENV[‘AWS_ACCESS_KEY_ID’], ENV[‘AWS_SECRET_ACCESS_KEY’])
s3_resource = Aws::S3::Resource::new(region: ENV[‘AWS_REGION’], credentials: credentials) # e.g ap-northeast-1

# If no bucket then create
# s3_bucket.create

s3_bucket = s3_resource.bucket(ENV[‘AWS_BUCKET’])
# , @dat

元記事を表示

#Ruby + #AWS S3 / パブリックに一時アクセス可能な「resigned URL」を発行するコード例

# Ref

【AWS S3】S3 Presigned URLの仕組みを調べてみた – Qiita
https://qiita.com/tmiki/items/87697d3d3d5330c6fc08

# Code

“`rb
# https://www.rubydoc.info/github/aws/aws-sdk-ruby/Aws%2FS3%2FObject:presigned_url

require ‘aws-sdk-s3’

credentials = Aws::Credentials.new(ENV[‘AWS_ACCESS_KEY_ID’], ENV[‘AWS_SECRET_ACCESS_KEY’])
s3_resource = Aws::S3::Resource::new(region: ENV[‘AWS_REGION’], credentials: credentials) # e.g ap-northeast-1

# If no bucket then create
# s3_bucket.create

s3_bucket = s3_resource.buck

元記事を表示

railsでdeviseを使う手順

ユーザー登録の際に使える、deviseという便利なツール。
よく使うことが多いので、簡単な手順をまとめました。

## gemを入れる
まずはgemを入れます

“`gemfile
gem ‘devise’
“`
“`
$ bundle install
“`

## deviseをインストールする
次にアプリケーション内にdeviseを読み込みます

“`
$ rails g devise:install
“`

## deviseを使って、モデルを作成
今回はユーザーモデルを作ってみます

“`
$ rails g model devise user
“`
必要な追加カラム等があれば、マイグレーションファイルを編集します

“`.rb
t.string :email, null: false, default: “”
t.string :encrypted_password, null: false, default: “”
#以下のように追加
t.string :name, null: false, defa

元記事を表示

rails db:migrateでエラー(StandardError: An error has occurred, this and all later migrations canceled:)

$rails db:migrate、または、$rake db:migrateを行った後の謎のエラー。

“`
== 20200107095832 CreateMicroposts: migrating =================================
— create_table(:microposts)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table “microposts” already exists: CREATE TABLE “microposts” (“id” INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, “content” text, “user_id” integer, “created_at” datetime NOT NULL, “updated_at” datetime NOT NULL)

・以下つづく

元記事を表示

CapistranoをMacOS X MojaveのRoRにインストールする

# Capistrano

## 前提条件

* Capistrano 3.11.2
* slackistrano >= 4.0.1
* P
## セットアップ

* Capistranoのインストール

“`sh:Terminal
$ bundle exec cap install STAGES=staging,production
bundler: command not found: cap
Install missing gem executables with `bundle install`
“`

あら。まあそりゃそうです笑

### command not found: capとなった場合

– この場合、capistranoのGEMがインストールされていない為、GEMインストールを行う

– Gemfileを開き、編集

“`sh:Terminal

# Gemfileの編集
$ vi Gemfile
group :staging, :production do
# Use Capistrano for deployment
gem ‘capistran

元記事を表示

[Rails]ログインidと投稿者が一致した時のみ編集・削除アイコンを表示させる条件式をモデルに書き出す

ビューに記載していた条件文を可読性、再利用性向上のためモデルに記載する。
※初心者です。ご指摘あればぜひお願いします。
# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem Sorcery使用`
#変更前
“`ruby:boards_controller
def index
@boards = Board.all.includes(:user).recent
end
“`
“`ruby:_boards.html.erb
<% if current_user.id == board.user_id %>

<%= link_to icon('fas', 'pen'), edit_board_path(board), id: :"button-edit-#{board.id}" %>
<%= link_to icon('fas', 'trash-alt'), board_path(board), id: :"button-delete-#{boa

元記事を表示

【Rails】ブックマーク(お気に入り)機能

備忘録です。

掲示板におけるブックマーク機能追加し、ブックマーク一覧ページを作成。
※初学者です。ご指摘あればお願いします!

# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem font-awesome-sass`
`gem Sorcery`
→installしていない場合、後述のcurrent_userメソッドが使用できません。

# ER図
中間テーブル(Bookmark)使用。
中間テーブル…userとboardのidだけを保存するテーブル。
![bookmark_ER図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562358/1a2092fb-8d9c-7ded-3be6-7ccd89eedf8f.png)

User:Board = 1:多
User:Bookmark = 1:多
Board:Bookmark = 1:多

あくまでブックマーク機能実装の記事ですので、**UserとBoardモデルはすでに作成されているものとして進行しますのでご注意ください

元記事を表示

Pay.jpとRailsで決済機能実装してみた。

#投稿経緯
payjpの実装記事そのものはたくさんあるのですが、**haml**で書かれてるのがほとんど。
正直僕はまだ**slim**や**haml**のような短縮系での書き方がわからず手間取ったので、今回通常盤での記載で投稿しようと思いました。

#実装

##APIキー取得
スクリーンショット 2020-01-07 15.35.24.png

####1. Payjpにログイン
https://pay.jp/login
※アカウントがなければ↑からも作成可能。

####2. ログイン後APIをクリック
クリック後が写真の画面になります。
大事な情報になるので、基本的には第三者に見せないようにしましょう。

元記事を表示

OTHERカテゴリの最新記事