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

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

Rubyの古いgemで自動ファイルアップロード Watirでの対処法

## 本稿について
WatirでWebサイトに対してファイルアップロードするスクリプトを書いていましたが、
古い環境で情報が見つけづらく困ったところ解決したので備忘録です。

## 環境
 CentOS Linux 7
 Ruby 2.0.0p648
 仕様gemはWatir
 ブラウザはFirefoxを使っていますが、Chromeなど、別のブラウザでも

## やりたいこと
あるWebサイトに対して、Watirをつかって自動スクリプト起動でファイルアップロードさせたい。
アップロード画面ではSelect file というボタンを押して、ファイル選択画面が出た際にそこからファイルを選んでアップロードさせる仕様

## 躓いたこと
アップロード画面からファイル選択をする挙動ができておりません。
OS標準のファイル選択画面が開いた時点で、ブラウザ外の動作になってしまうのかスクリプトの操作が及びません。

## 試したこと

1. watir内部でjavascriptを実行できるので、
クリップボードなどを使ってコピペができないか など試しましたがそもそも画面の仕様がスクリプトでのクリ

元記事を表示

[rails]gem ‘payjp’の実装手順

1.gem ‘payjp’をインストールする

#2.orderコントローラー作成記述する
“`
def index
@order = Order.new
end

def create
@order = Order.new(price: order_params[:price])
#@orderにprice=”1000″値段が入る
if @order.valid?
# 保存するための条件(空欄じゃない)をクリアすれば支払、データー保存される
pay_item#支払をする
@order.save#データーを保存する
return redirect_to root_path
else
render ‘index’
end
end

private
def order_params
params.permit(:price, :token)#データー保存を許可したカラム
end
def pay_item
Payjp.api_key =

元記事を表示

PG::ConnectionBad: could not connect to server: No such file or directory

#PG::ConnectionBad: could not connect to server: No such file or directoryというエラーがでた

##解決法

1,ターミナルでdesktopの前に行く。

2,
“`$ cd /usr/local/var/log/
“`

3,
“`$ cat postgres.log
“`

そうすると以下のようなエラーがでる
“`dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
Referenced from: /usr/local/bin/postgres
“`

4,以下の記事を参考に実行
https://qiita.com/eightfoursix/items/bf11693b085eced95e29

4-1
“`$ brew upgrade
“`

4-2
“`$ brew postgresql-upgrade-database
“`

自分の場合は、これで解決しました。

元記事を表示

【RSpec】 Factory Botを使いこなそう

# FactoryBotの基本のキ

`bin/rails g factory_bot:model user`

のようにFactoryBotでデータを作成するファイルが生成されます。今回は`spec/factories/users.rb`に以下のようなファイルが生成されると思います。

“`spec/factories/users.rb
FactoryBot.define do
factory :user do
end
end
“`

このなかに作りたいデータを詰め込んでいきます。

“`spec/factories/users.rb
FactoryBot.define do
factory :user do
name {“佐藤”}
age {20}
height {170}
end
end
“`

# 実際に使ってみよう。

“`spec/models/user.rb
require ‘rails_helper’

RSpec.describe User, type: :model do
it “is valid with a

元記事を表示

rails tutorial 第6章

#はじめに

独学で[rails tutorial](https://railstutorial.jp/)を進めていく過程を投稿していきます。

進めていく上でわからなかった単語、詰まったエラーなどに触れています。

個人の学習のアウトプットなので間違いなどあればご指摘ください。

初めての投稿なので読みにくいところも多々あるかと思いますがご容赦ください。

#第6章 ユーザーのモデルを作成する
##6.2.2 存在性を検証する
存在性の検証は:presenceで行うようです。
tutorialではよく省略されたコードが示されていますのでしっかり理解するまでは自分でフォローもしておこうかと思います。

“`
validates :name, presence: true
#すべて括弧をつけると
validates(:name, {presence: true}) #第一引数には検証するカラム名を、第二引数には」検証する内容
“`

問題発生!!
リスト6.13のtestを実行すると

“`
RuntimeError: RuntimeError: database is l

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #3 RSpec, FactoryBot導入しpostモデルを作る

←[Rails 6で認証認可入り掲示板APIを構築する #2 gitとrubocop導入](https://qiita.com/rf_p/items/5ef018bec4ed2f16fc0e)

# RSpec, FactoryBotのインストール

前回の続きから。
テストに使うRSpecとFactoryBotを入れます。

“`diff:Gemfile
group :development, :test do
+ gem “rspec-rails”
+ gem “factory_bot_rails”
end
“`

“`powershell
$ bundle
“`

インストールできたので初期化をします。

“`powershell
$ rails g rspec:install

Running via Spring preloader in process 6770
create .rspec
create spec
create spec/spec_helper.rb
create spec/ra

元記事を表示

Ruby on RailsにおけるServiceクラスのススメ

こんにちは、@hairgaiです。
今回は、賛否両論あるServiceクラスについての自分的な使い方を書いていこうと思います。

## Serviceクラスとは
DDD(ドメイン駆動設計)でのサービスから派生している(と勝手に認識している)、ある一つの機能を記述するクラス郡です。
詳しくは説明している人がたくさんいらっしゃるので割愛しますが、ビジネスロジックをモデルとコントローラーの中間でキレイに書けるので、僕はよく使っています。
今回は(僕の使い方は間違ってるかもしれませんが)、自分的な使い方及びそのメリットと思われる部分を書いていきます。

## 基本的な使い方
まず、基本的な使い方を、コード例と共に紹介しようかなと思います。(これが正解かどうかは正直わかりませんが、見やすいのでいいかなと思ってます)
例えば、SNSなどで「フォローをする」という機能をService層として1ファイルに記述すると、こんな感じにになるかと思います。
**※重ねていいますが、これが正解とかじゃないです。**

“`ruby
class FollowService
attr_reader :user

元記事を表示

[ruby]引数をつけた際のメソッドの呼び出し

#概要
bitcoinの自動売買ツールを作成している時に、メソッドに引数をつけて使うことがあったので、記録しておきます。

#メソッドの定義
メソッドの定義は以下のような式になります。

“`
def メソッド名(変数1, 変数2, …)
実行する処理
end
“`

#メソッドの呼び出し
メソッドを呼び出すときの式は以下のような形です。

“`
メソッド名(引数1, 引数2, …)
“`

#実際に見てみます

“`number.rb
def number(a,b)
return a * b
end

puts number(3,4)
#実行結果は12になる
“`

numberメソッドの引数として、aに3、bに4が呼び出されています。
結果、3×4が実行されて、12が出力されます。

元記事を表示

Cを使ってRubyのメソッドを書く その1

###目次
Cを使ってRubyのメソッドを書く その1 <- ここ [Cを使ってRubyのメソッドを書く その2 (Numo::NArray)](https://qiita.com/ki073/items/a9a06ed5f505e763893b) ###はじめに C++でRubyの拡張ライブラリを書く方法は、「[C++を使ってRubyのメソッドを書く](https://qiita.com/ki073/items/b35e1e0ecc4862ea3c14)」にありますので参考にしてください。C++さえ書ければほとんど苦労せずにライブラリが作成できますので、自分で一から書かれるのでしたらそちらをお勧めします。 ここでは、Cで書かれた関数を拡張ライブラリにする方法を紹介します。C++でもCと同様の書き方ができますので、すでにCで書かれたライブラリがある場合にも使うことができます。 1. 2. はdouble, float, intなどの単純な変数に受け渡し、3.で文字列に受け渡し、4.で既存のライブラリを拡張ライブラリにする方法を紹介します。 配列を受け渡す方法は(その2)を参考にして

元記事を表示

【Rails】paranoia(gem)を使ってイベント終了機能(論理削除)を実装する

# そもそも論理削除とは?
>RailsのActiveRecordの削除(delete)は、通常、物理削除になっており、実際にデータがデータベースから削除されます。それに対して、論理削除は実際にはデータを削除せずに、削除されたと見なすフラッグと呼ばれるカラムを設定して、ユーザーには削除しているかのように振る舞い、必要時には元の状態に戻せるものです。「ユーザーが退会した後も、システム上一定期間はユーザーのデータを保持しなければならない。」や「違反等があり、一時的にアカウントを凍結したい」などの場合に、論理削除が使えると思います。
Railsではparanoiaというgemライブラリを利用することで簡単に実装することができます。このgemはacts_as_paranoidというgemを再実装したものです。

引用 (https://remonote.jp/rails-gem-paranoia)

分かりやすい記事があったので引用させて戴きました。通常は上述されている様に管理ユーザーが**違反等があり、一時的にアカウントを凍結したい**などの場合に使われる機能みたいですが僕の場合は**イベ

元記事を表示

windows10,Ruby2.6.6でrails serverコマンドを実行して「cannot load such file — sqlite3/sqlite3_native」がでた

#はじめに
[@shuheyさんの記事](https://qiita.com/shuhey/items/8cd28aed5906fb5fa6ec)の通りにやればほぼ解決します.
Ruby2.6.6でやったときにうまくいかなかったのでメモ程度に…

#環境
windows10 Home
Ruby+Devkit 2.6.6-1 (x64)
Rails 5.1.6

#直したはずなのにエラーが
[Ruby on Railsチュートリアル](https://railstutorial.jp/chapters/beginning.html)と[Rails Girls インストール・レシピ (Windows 用セットアップ(WSLが使えない方向け))](https://railsgirls.jp/install#setup_for_windows_without_wsl)の通りに環境構築をして`rails server`コマンドを実行したところ以下のようなエラーが出ました.([@shuheyさんの記事](https://qiita.com/shuhey/items/8cd28aed5906f

元記事を表示

【Ruby on Rails】投稿したユーザーのみが編集できるようにする

# 目標

– URLのベタ打ちでの他ユーザーの編集を防ぐ
– view画面にそもそも表示させない

# 開発環境
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)

# 考え方
基本的には、
①if文でcurrent_userなどで絞るか、
②current_userに紐づくモデルを抽出するかで
投稿したユーザーのみが編集可能。
※viewでは前者を、controllerでは後者

元記事を表示

git push heroku masterする際のエラー解消方法

【概要】
—————————————-
1.結論

2.どのようなエラーか

3.なぜエラーが起きるのか

4.どのように解決するのか

1.結論
—————————————-
githubの左上メニューでCompare to Blanchを押してmasterにmargeする!

2.どのようなエラーか
—————————————-

“`ruby:ターミナル
% git push heroku master
To https://git.heroku.com/*****.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://git.heroku.com/*****.git’
hint: Up

元記事を表示

[rails sエラー]md5.bundleとmysqlインストールエラー

## 目的地 
作成済みアプリで問題なくrails s実行
## 現在
“`
$ rails s
省略)
/Users/ユーザーの名前/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require’: dlopen(/Users/ユーザーの名前/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/digest/md5.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /Users/ユーザーの名前/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/digest/md5.bundle
Reason: image not found – /Users/ユーザーの名前/.rbenv/versions/2.5.1

元記事を表示

Twitterでかっこよくソースコードを表示するCarbonを君は知っているか。

こんにちは、現在フリーのweb制作者として活動していますしょーごと申します。

さてみなさん、`ソースコードのハイライトは見ていて気持ちが良いですよね。`

VSCodeのコードハイライトだと、class名が緑色になるのが好きだったりします。

![スクリーンショット 2020-09-07 20.47.45.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472701/f46661a3-794b-c78c-b139-8176cc054f7c.jpeg)

これに慣れてしまうと、もう質素なメモ帳など使えなくなりますよね。

しかし、Twitterにはエディター機能はないので、ツイートしたくても**そのままソースコードを貼り付けると、すごく味気なくなります**(文字数制限もきつい)

![スクリーンショット 2020-09-07 20.51.48.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472701/05d9eb69-f

元記事を表示

Webアプリケーションにおけるセキュリティ

セキュリティ対策をしていないwebアプリケーションの開発は非常に危険です。
セキュリティとは何なのか。
セキュリティ対策をしていないと
・なぜ危険なのか
・どういった事が起こるのか
・どのように対策するのか
について学んだ内容をまとめました。(Rubyでの開発)

“`
前提
プログラミング初学者(1~2ヶ月)が学んだ内容です。
実際の現場で通用しないことや間違った内容が含まれている可能性があります。
間違っている部分や浅い部分については、追記やご指摘いただけると幸いです。
“`

#セキュリティ対策していないとなぜ危険なのか
セキュリティ対策をしていないwebサービスはなぜ危険なのか、何が起こるのか。
**結論**
利用者は個人情報が漏れる。
管理者はwebページを勝手にいじられる。

もう少し細かく見ると、
・個人情報を勝手に閲覧される
・webページの内容が改ざんされる
・webページ自体が利用不可能になる
その結果
・webサービス利用者へ大きな損害
・公開したwebページの社会的信用を失う
#webサービスにおけるセキュリティとは何か
脆弱性があるwebサービスはセキュリ

元記事を表示

Sinatra アプリを CSS で装飾

# はじめに
[前回の記事 – Qiita](https://qiita.com/superrino130/items/a002538de3f02ed63451)で更に味を占めたので、`CSS`でチョットだけ色を付けてみました

# 完成画面
![20200907A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/e0258c1b-59c6-96dd-ab3b-e1959e707da3.png)
[heroku アプリ](https://vast-bastion-88155.herokuapp.com/)
# 前回の反省点
“`err.or
app.rb:2:in `require’: cannot load such file — sinatra/reloader (LoadError)
“`
単に、`sinatra-contrib`が`group :development`になっているだけでした。
# CSS
ずらずらと並んでいるのはカッコ悪いので、社名のみを表示し、路線名はクリッ

元記事を表示

railsのハッシュタグ検索の実装

今回は、railsでハッシュタグ機能を実装しました。

Railsのキャプションにハッシュタグ機能を実装する


のサイトを参考にさせていただきました。

完成図
商品を出品する時にタグをつけると

![スクリーンショット 2020-09-07 18.44.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682043/fa5a191a-9cc5-c5e7-56a9-03f09e952ead.png)

リンクが踏めるハッシュタグが投稿詳細の際に確認でき、
![スクリーンショット 2020-09-07 18.45.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682043/fb65e546-02b1-d7e5-9a9d-5b8e0dd72f70.png)

リンクの先には同じタグを持った商品が並ぶ
![スクリーンショット 2020-09-07 18.57.37.png](https://qiita-image-st

元記事を表示

Rails on Dockerの環境構築手順

# 環境
– MacOS Catalina 10.15.6
– Docker 2.3.0.3
– Ruby 2.7.1
– Rails 6.0.3.2
– Bundler 2.1.4
– Gem 3.1.2
– Yarn 1.22.5

# 手順
予め[Docker](https://www.docker.com/get-started)をインストールしておいて下さい。

## Rubyイメージの取得

“`sh
$ docker pull ruby
“`

## Dockerコンテナを起動
``と``は適時変更して下さい。

“`sh
$ docker run -i -t –name -p 3000:3000 -v “$PWD”: /bin/bash
“`

## Railsの導入
作業ディレクトリへ移動します。

“`sh
$ cd
“`

次に、`Gemfile`の生成

“`sh
$ bundle init
“`

生成されていることを確認。

“`s

元記事を表示

preventDefaultはなぜ必要なのか

動作環境
Ruby 2.6.5
Rails 6.0.3.2

JavaScriptにおけるpreventDefaultがどういった働きをしているかをようやく理解することができたので、整理するために投稿してみました。

## preventDefaultの意味
preventDefaultの必要性について話していく前に、そもそもpreventDefaultが何をしているのかを説明します。

###default(デフォルト)の挙動をprevent(妨害)しています。

説明になっていないと思うかもしれませんが、厳密な説明をしようとすると、おそらくかなり長い行数が必要となってしまいますし、具体的な例を提示した方がわかりやすいと思い、端的に説明しました。早速、具体的な例を元に説明していきます。

## preventDefaultの具体例

“` Ruby:index.rb
<%= form_with url: "/posts", method: :post do |form| %>
<%= form.text_field :fuga %>
<%= form.submit '投

元記事を表示

OTHERカテゴリの最新記事