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

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

RubyでC拡張ありのgemをインストールする際に、make -j4 みたいに複数のCPUのコアを使って早く終わらせたい

[ruby-jp.slack.com](https://ruby-jp.github.io/)にて

![RubyでC拡張を使っているgemをインストールする際に、make -j4 みたいに複数のCPUのコアを使って早く終わらせたい時はどんなオプションをつければいいですか?](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/5dd9fe71-470a-21ab-24ad-5946d75f6f3f.png)

![環境変数で設定した記憶があるけど忘れてしまった](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/0377ec91-40ff-c6b2-147b-754014e75ddb.png)

![export GNUMAKEFLAGS=-j4](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/729dde9c-e915-ed1d-

元記事を表示

トランザクションシミュレータ(ロック待ちバージョン)

トランザクションの検証が面倒すぎる。モデルとしては単純そうだから、作ってしまおう、と思った。

# Ruby

“`ruby:tran_request.rb
class Request
end

class Read < Request attr_reader :var def initialize(var) @var = var end def to_s() return "Read(#{@var})" end end class Write < Request attr_reader :var,:val def initialize(var,val) @var = var @val = val end def to_s() return "Write(#{@var},#{@val})" end end class Insert < Request attr_reader :var, :val def

元記事を表示

rails コマンドが使えなくなった時の対処法

rubyのバージョンを上げたところ、rails s しようとしたら、コマンドが使えなくなった。

“$ rails –version rbenv: rails: command not found
The `rails’ command exists in these Ruby versions:
2.6.5 “

##結論 gem ‘rails’ をインストールしよう
1.`gem update –system`
2.`gem install bundler`
3.`gem install rails`

ターミナルで rails -vを打ち込み、Rails 5.2.3が表示されたらOKです。
 

元記事を表示

deviseユーザー登録

# 1 deviseをインストール

##ユーザー登録機能を実装するためには、deviseというgemをインストールします。

1. Gemfileで gem ‘devise’を追加

2. ターミナルでbundle install

3. ここでrails s でサーバー起動しないと反映されない

4. rails g devise:install で設定ファイルを作成

# 2 ユーザーモデル+テーブルを作る

ここで注意したいのが普通のモデルを作る時と同じではないということです。

### モデル作成

– ターミナルで rails g devise user と入力(この時ルーティングが自動設定され、マイグレーションファイルも生成される)

– db→migrate→2020〜のファイルにてテーブルに追加するカラムやカラムの型を記載する。

“`ruby
class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :u

元記事を表示

オブジェクト指向という考え方について1

Railsの勉強をやり直し始めたのでアウトプットとして残します。

オブジェクトとは、単純に翻訳すると「対象物」です。決して特殊なものではなく、世の中で皆さん自身も含めて皆さんがやり取りするもの全てがオブジェクトに当たります。オブジェクト指向とは、コンピューターの世界の全ての処理をオブジェクトを中心に取り扱う考え方です。

■オブジェクト(対象)とは、

●ある目的の振る舞いと、名前などの特徴となる固有の値とを持つ
●必要な時に呼び出される振る舞いを通し、固有の値を利用して目的とする処理を行う

ものだと言えます。少し硬い表現になりますが、この意味を理解することが重要です。

■オブジェクト思考プログラミングとは
何かのイベントを行う時、一般的に「式次第(プログラム)」を用意します。式を滞りながら運営するためには、この手順がしっかりできていることが重要です。なんらかの目的を持ったコンピュータプログラムを作ること(プログラミング)も、作業の手順(ロジックまたは手続き)をその目的に従って組み立てることになります。
従来、プログラミングは「全ての手順を一連のロジックで組み立てる」という方法で

元記事を表示

rails 新規アプリケーション立ち上げコマンド

#Ruby on Railsでの新規アプリケーション立ち上げ方法
###自分に向けて記憶の範囲内だけでアウトプットします!
###①
“`java:ターミナル
rails _6.0.0_ new test -d mysql
“`
###②
“`java:ターミナル
rails db:create
“`
###③
“`java:ターミナル
rails g model test
“`
###④
“`java:db/migrate/2020・・・・・
t.string :name, null: false (ここの行の記述は適当)
“`
###⑤
“`java:ターミナル
rails db:migrate
“`
###⑥
“`java:config/routes.rb
root to tests#index (ここの行も適当)
“`
###⑦
“`java:ターミナル
rails g controller tests
“`
###⑧
“`java:app/controller/tests.controller.rb
def index
@tests = Te

元記事を表示

PCの開発環境で作ったWEBアプリをスマホでも確認する方法

最近個人開発アプリのレスポンシブ化を行いました。
デベロッパツールでも見れますが、実機でもちゃんと表示されるか確認したいですよね。そんな時に手軽にスマホアプリでも確認する方法を共有させて頂きます。

【環境】

– windows10 Pro
– Rails: 6.0.3.2
– ruby: 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
– Docker for windows
– MySQL 5.7
– nginx:1.15.8

##手順
まず、PCとスマホを同じWiFiに繋ぎます。

その後、**Windowsキー+R**を押し、**cmd**と入力します。
コマンドプロンプトを開くので、**ipconfig**と入力しエンターを押します。

“`
イーサネット アダプター VirtualBox Host-Only Network:
(省略)
イーサネット アダプター VirtualBox Host-Only Network #2:
(省略)
イーサネット アダプター vEthernet (Extarnal V

元記事を表示

if文で論理演算子をたくさん使いたいの巻

#はじめに
 本日学んだ、if文で条件を重ねたいときに、論理演算子をどう使うかについてまとめる。

##論理演算子
&&→かつ

“`ruby
if a && b
#処理
end
“`

aとbの両方がtrueのとき、処理が実行される。

||→または

“`ruby
if a || b
#処理
end
“`

aかbのどちらかがtrueであれば処理が実行される。

`!a`
trueとfalseが反対になる。

“`ruby
if !a
#処理
end
“`

aが本当はfalseだと、処理が実行される。(falseがtrueに変わるため)

##複数の論理演算子をif文で使う

簡単に言ってしまえば、( )を使って、まとまりを括る。

“`ruby

if ( a && b ) || ( !a && !b )
#処理
end
“`

||があるため、左辺か右辺がtrueであれば、処理が実行される。
左辺は「aかつbがtrue」であれば、左辺全体としてtrueになる。
右辺は「aかつbが本当はfalse」であれば、右辺全体としてtrueになる。

元記事を表示

rails db:migrateでエラー(StandardError: An error has occurred, this and all later migrations canceled:が出た時の対処

# はじめに
これは学習用のメモになります。

今回は$rails db:migrate、または、$rails 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,

元記事を表示

Railsチュートリアル備忘録2

## 環境
macOS Catalina 10.15.5
Rails 6.0.3

Railsチュートリアルとそれに付随するいろいろを書いていきます。
Githubに慣れたいので、チュートリアルは第6版に準拠しています。

## 1.5.1 Herokuのセットアップとデプロイ
### リスト 1.21
`$ heroku create`

“`
› Warning: heroku update available from 7.42.13 to 7.43.0.
Creating app… done, ⬢ *****
https://*****.herokuapp.com/ | https://git.heroku.com/*****.git
“`
`$ git push heroku master`

“`
remote: LoadError: cannot load such file — uglifier
“`
“`
error: failed to push some refs to ‘https://git.heroku.com/****

元記事を表示

トランザクションシミュレータ

トランザクションの検証が面倒すぎる。モデルとしては単純そうだから、作ってしまおう、と思った。

# Ruby

“`ruby.trans.rb
class Command end
class Begin < Command end class Rollback < Command end class Commit < Command end class Read < Command attr_reader :var def initialize(var) @var = var end end class Write < Command attr_reader :var,:val def initialize(var,val) @var = var @val = val end end class Lock attr_reader :tr,:var,:type def initialize(tr,var,type) @tr=tr @var=va

元記事を表示

画像を複数件保存・表示する

##実装したい事

画像実装機能は実装済みで、複数件の写真を保存・表示させる。

###1.モデルのアソシエーション変更
変更前

“`
class Scene < ApplicationRecord belongs_to :user has_one_attached :image 省略 end ``` 変更後 ``` class Scene < ApplicationRecord belongs_to :user has_many_attached :images 省略 end ``` ###2.コントローラーの変更 変更前 ``` class ScenesController < ApplicationController def new @scene = Scene.new end def create @scene = Scene.new(scene_params) if @scene.save redirect_to root_path else render :

元記事を表示

コードを販売できるサービス「Code-sell」をリリースした!(個人開発)

追記
メール認証のエラーを修正しました。
いままで気づけなくてすみませんでした。

###初めに
今回、約2か月ぶりにwebアプリを公開しました。
プログラミングコードを販売できるサービス Code-sellです。

https://www.code-sell.net/

なるべく気軽に販売・購入できるように工夫しました。
100円から価格設定できます。
ちなみに僕が今まで作ってきた4つのwebアプリのコードをすべて無料で公開しています!
ほしい人いるかわからないけど何かの参考にでも…。

![code-sell.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480294/6fa5f9e1-080e-8e43-0e92-605dfac28863.png)

↑topページ

###なぜ作ったか
今まで作ったwebアプリを販売(譲渡)しようと思ったのですが権利の問題や面会などめんどくさそうなものがたくさん出てきました。そんな時に思いつきました。Code-sellは譲渡はせずコードをダウンロードするだけ

元記事を表示

SSHでポートフォワード接続して、ファイルの送受信をする

## 環境
Ubuntu 16.04.7 LTS (Xenial Xerus)
ruby 2.5.0p0

## やりたい事
Rubyプログラムをポートフォワードで指定したサーバーに転送した後、転送先のサーバーでRubyプログラムを実行させて、csvファイルを標準出力させます。そして、標準出力したcsvファイルを、自分のローカル環境に持ってくるという事をやります。

## コード
“`ruby
def ssh_connect

begin
     # ファイルを転送
_cmd = system(‘scp -P 54322 -i /home/.ssh/id_rsa /home/syori.rb server@153.153.xx.xx:/home’)

# ポートフォワードの設定
Net::SSH.start(
‘153.153.xx.xx’,
‘username’,
:keys => ‘/home/.ssh/id_rsa’,
:p

元記事を表示

[Rails]Active Hashの導入

# はじめに
Active_Hashとは、都道府県名やカテゴリー選択などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるgemです。
Active_Hashを用いることで、モデルファイルに直接記述した変更されないデータに対して、ActiveRecordのメソッドを用いることができます。

# 目次
1.Active Hashのインストール
2.モデルの作成
3.マイグレーションファイルの編集
4.アソシエーションの設定
5.ビューファイルの編集

# 1. Active Hashのインストール
gemfileに以下を記述します。
その後、コマンドでbundle installを実行します。

“`ruby:gemfile
gem ‘active_hash’
“`

# 2. モデルの作成
今回はPostモデルとCategoryモデルを作成します。
Postモデルはいつも通りに作成します。

##### ターミナル
“`
rails g model post
“`

Categoryモデルを作成する際は、「–sk

元記事を表示

Herokuへのデプロイ【Ruby on Rails】初心者

### 開発環境:macOS Catalina/GitHub/MySQL
※Herokuへのユーザー登録完了後の手順です。
備忘録として残したいと思い、記事にしました。
初心者なので、至らない点があるかと思いますがその際はコメントいただけたらと思います。

# 1. Heroku CLIをインストールする
コマンド

“`
% brew tap heroku/brew && brew install heroku
“`

バージョンの確認

“`
% heroku –version
“`

バージョンが出力されたらインストール完了

公式サイト:https://devcenter.heroku.com/articles/heroku-cli

# 2. ログインする

“`
% heroku login –interactive
Email: それぞれ入力
password: それぞれ入力
“`

:information_desk_person:登録したメールアドレスがLogged in asの後に表示されていればログイン成功

# 3. Gemの導入

元記事を表示

Railsで生SQLをリードレプリカに投げる

switch_pointというgemを使用するのだが、
readmeにちらっとだけ書いてあって、例が示されてないのでわかりにくいがswitch_point_proxy.model_for_connectionってのを使えばいいみたい

[https://github.com/eagletmt/switch_point](https://github.com/eagletmt/switch_point)

例えばUserモデルだったら、

“`ruby
use_switch_point :slave
“`

みたいに追加して、

“`ruby
rows = []

User.with_readonly do
con = User.switch_point_proxy.model_for_connection.connection
sql = “select * from users limit 1”
rows = con.select_all(sql)
end
“`

みたいな感じで行けるみたい

元記事を表示

Rails Active_storage -画像の保存を簡易化する-

Active storageとは

Active Storageは、ファイルアップロードを行うための機能です。これを使えば、フォームで画像の投稿機能などが簡単に作れます。クラウドストレージサービス(Amazon S3, Google Cloud Storage, Microsoft Azure Storageなど)に対するファイルのアップロードを簡単に行うことができます。

導入方法

  • Active_storageに沿ったテーブルを作る

““
% rails active_storage:install
““
Active_storageをインストールし、関連ファイル(マイグレーションなど)を生成

““
%rails db:migrate
““

Seaquel Proを確認すると以下のようなテーブルが生成されていたらここまでは成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629

元記事を表示

【Rails】deviseで現在ログインしているユーザー情報の取得方法

#はじめに

deviseでは「現在ログインしているユーザーの情報を取得」する事ができます。
例えば、「名前」「生年月日」「住所」「電話番号」など、対象のユーザーが既に登録した情報を表示する方法を紹介します。

###目次

1.current_userメソッド
2.遷移先のview

#開発環境
ruby 2.6.5
rails 6.0.0
devise 4.7.3

##前提
devise導入済み
model生成済み
ユーザー登録済みでデータを既に持ってる
view作成済み

#実装

それでは実装して行きます。

####1.current_userメソッド

deviseを導入しているため使用できるメソッドで、current_user(現在ログインしているユーザー)の情報が取得できます。

“`index.html.erb
<%= link_to current_user.nickname, edit_user_registration_path(current_user), class: "user-name" %>
     #↑ここ#          

元記事を表示

【Ruby on Rails】Skipprを使用した画像スライドショー

# 目標
![スライドショー.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700999/de4bbca0-5238-565b-ad41-7d06610e7d17.gif)

# 開発環境
ruby 2.5.7
Rails 5.2.4.3
OS: macOS Catalina

# 前提
※ ▶◯◯ を選択すると、説明等が出てきますので、
  よくわからない場合の参考にしていただければと思います。

– [deviseでログイン環境構築](https://qiita.com/japwork/items/275110b810965fbdf72f)
– [ログインユーザーのみができる投稿機能](https://qiita.com/japwork/items/8dfb52121036791ac4fb)
– [投稿の編集機能(更新、削除)](https://qiita.com/japwork/items/e258ccbbe4f48ea5a3b5)

補足
元記事を表示

OTHERカテゴリの最新記事