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

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

Rubyの細かい文法: 同名の変数とメソッドがある場合

Ruby では変数とメソッドに同じ名前をつけられます。同名の変数とメソッドがある場合、変数のほうが優先されます。定義の順序とは関係ありません。

`()` を付ければ、メソッドと見なされます。

“`ruby
def foo
“method”
end

foo = “variable”

# これは変数
foo #=> “variable”
# これはメソッド呼び出し
foo() #=> “method”
“`

`.` を付けてレシーバを指定したときも、メソッドと見なされます。

“`ruby
public # private だと . で呼び出せない
def foo
“method”
end

foo = “variable”

# これは変数
foo #=> “variable”
# これはメソッド呼び出し
self.foo #=> “method”
“`

Rubyのクラス名は定数名、つまり変数の一種なので、同じ名前のクラスとメソッドがあるときは上記と同じ動作になります。

“`ruby
public
def Foo
“method”
end

clas

元記事を表示

brew upgradeしたらopensslが1.1.1gになってしまいRailsが起動できなくなってしまったとき

# 参考
[Cannot install Ruby versions < 2.4 because of openssl@1.1 dependency](https://github.com/rbenv/ruby-build/issues/1353#issuecomment-573414540) # 経緯 [問題](#問題) [過程](#過程) [解決](#解決) # 問題 `ruby 2.0.0-p648`で動いているプロジェクトの修正をローカルで試すタイミングで動かないことに気づきました。 ```bash $ bundle exec rails s Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError) ``` - brew upgradeでopensslが`1.1.1g`になってしまっていて、今までopenssl`1.0.0`で動かしていたプロジェクトが動かなくなってしまっていました。 # 過程 ちょっと試してこの時点では以下の2点を考えていました。 - `ruby 2.0

元記事を表示

Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: YES)

# やろうとしていること
ローカル環境で作ったポートフォリオ(個人アプリ)をAWSにデプロイしようとしているところです。
本番環境でデータベースを作ろうとしたのですが、エラーが出てしまいました。

# エラー文
“`
[user@ip-00-0-0-000 pfc-master]$ rake db:create RAILS_ENV=production
Access denied for user ‘root’@’localhost’ (using password: NO)
Couldn’t create ‘pfc-master_production’ database. Please check your configuration.
rake aborted!
Mysql2::Error::ConnectionError: Access denied for user ‘root’@’localhost’ (using password: NO)

Tasks: TOP => db:create
(See full trace by running task with –tr

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #6 show, create実装

←[Rails 6で認証認可入り掲示板APIを構築する #5 controller, routes実装](https://qiita.com/rf_p/items/2b40f08e0509fb8ff56b)

# showテストの実装

前回のindexに続き、showのテストとcontrollerを実装していきます。
showは、パラメータのidを元にfindして返すという挙動です。

テストは正常にレスポンスが返ってくることと、存在しないIDの時に404が返ってくることあたりでしょうか。

“`diff:spec/requests/v1/posts_controller.rb

+ describe “GET /v1/posts#show” do
+ let(:post) do
+ create(:post, subject: “showテスト”)
+ end
+ it “正常レスポンスコードが返ってくる” do
+ get v1_post_url({ id: post.id })
+ expect(response.st

元記事を表示

Rails アプリケーションの作成準備

##アプリケーションの作成##

“`command:command
% rails _6.0.0_ new application -d mysql
“`

・「6.0.0」でバージョンを指定しています。
・「application」は作成したいアプリケーション名を示します。
・「- d mysql」のオプションをつけることで、
  データ管理ツールとしてMYSQLを使用します。

##データベースの作成##
“`ruby:config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock
“`
「utf8」のようにエンコーディングの設定を行うことができます。

“`command:command
% rails db:create
“`
railsコマンドで

元記事を表示

privateメソッド

はじめに、前投稿でゲッターで得た値を**インスタンス名.ゲッターメソッド名**で出力可能ですと記述いたしましたが、
**誤りでした、申し訳ありません。**インスタンスの値が代入された、変数を用いる場合、**変数.ゲッターメソッド名**で出力致します。

以下、プライベートメソッドについての投稿です。

また、今回投稿するに当たって参考にさせて頂いたURLです。
ありがとうございました。

【Ruby入門】private と protected の使い方まとめ【メソッドのアクセス制御】


https://qiita.com/kidach1/items/055021ce42fe2a49fd66

プライベートメソッドとはprivate以下の記述をクラス外から呼び出すことが出来ないというものです。

“`ruby
class Fruits

private

def name
puts “りんご”
end

end

apple = Fruits.new
apple.name
“`
“`
出力結果
private method `name’ called for #<

元記事を表示

HerokuでDocker環境Rails MySQLなものを動かす。deviseかつtwitter APIを隠しながら

人に見せる用に書いていません。

自作記事のお父上、Rails+MySQL+Nginx+Unicorn+Docker+CircieCIな開発環境を作りたいえ〜の記事の続き。

上で作った環境に[[*Rails*] deviseの使い方(rails5版)](https://qiita.com/cigalecigales/items/f4274088f20832252374)を追加し、かつTwitterAPIを`gem ‘dotenv-rails’`で隠しながら、本番環境のherokuにアップロードした。

### ①docker-compose.ymlのコマンドを変更する

“`docker-compose.yml
command: /bin/sh -c “rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b ‘0.0.0.0’”
“`

### ② gem ‘dotenv-rails’を導入する

目的:TwitterAPIキーをGitHubのローカルに入れたくない

envファイルはGitの管理に入れたくな

元記事を表示

簡易LISP処理系の実装例(Ruby版)

[Python版](https://qiita.com/ytaki0801/items/12c0b1bda1e0452048db),[Scheme版](https://qiita.com/ytaki0801/items/2d2a1edf371c103711bd),[C言語版](https://qiita.com/ytaki0801/items/5d56a2ba0ba000f3b795)に続く第四の実装例です.そろそろ,まとめリンク集の記事を作るかも.

この記事は,下記拙作記事のRuby版を抜粋・修正したものを利用した,簡易LISP処理系の実装例をまとめたものです.

* [『括弧文字列』簡易パーサ実装例まとめ](https://qiita.com/ytaki0801/items/b8d7d4c778fe98966ce5)
* [リスト処理関数(cons,car,cdr,eq,atom)実装例まとめ](https://qiita.com/ytaki0801/items/a11c8143c5c63a406c7f)

主旨およびプログラムコードはPython版とほぼ同じで,最低限の機能をも

元記事を表示

rails チュートリアル

次回2.2.2から

元記事を表示

Rubyで型宣言っぽくコードを書けるようにしてみた

## 結論

以下のようなコードが動くようになります。

“`ruby
n = int 42
# => 42が代入される

f = int 4.2
# => TypeError!
“`

## やったこと

以下のように`Kernel`モジュールにモンキーパッチします

“`ruby
module Kernel
module_function

def int(var = 0)
if var.is_a?(Integer)
var
else
raise TypeError, “#{var} isn’t Integer”
end
end
end

“`

あとは、`n = int 42`のように書くだけで型宣言っぽくRubyの変数を作ることができます。また異なる型(というかクラス)の値を渡した場合は例外として`TypeError`が発生します。

“`ruby
n = int 42
i = int 21

p n
# => 42
p i
# =>

元記事を表示

Kinx Tiny Typesetting – LaTeX 派? つか、知ってる?

# Kinx Tiny Typesetting

こんにちわ。

今回は組版システムがメインです。TeX や LaTeXを使ってますか?それは良いですね。私はイマイマ **全く使ってません**。好きですけど。

学生時代の論文書きには使ったものの、就職したら使わなくなってしまったあの懐かしくも美しいシステム、LaTeX。

この記事はそんな LaTeX に関係しつつ、私たちの Kinx に関連する、そんな内容です。

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。最近はだいぶ記事を書く時間がなく、生存確認的な記事ですが、ご容赦。書きたいことはいっぱいあるのですが。

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

元記事を表示

【Ruby on Rails】DM、チャット機能

# 目標
![chat.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700999/89f8486c-7227-5a69-6f4b-2c23143e80ab.gif)

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

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

– [deviseでログイン環境構築](https://qiita.com/japwork/items/275110b810965fbdf72f)
– ユーザー詳細画面と一覧と作成済み

# 流れ
1 modelの作成
2 modelの編集
3 controllerの作成
4 routingの編集
5 viewの編集

# modelの作成
“`:ターミナル
$ rails g model Room

$ rails g model Chat user_id:integer room_id:integer

元記事を表示

Postgresエラー「PG::ConnectionBad」

# 何度もつまづいたので一旦簡単にメモ

PG::ConnectionBad

could not connect to server: Connection refused Is the server running on host “localhost” (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host “localhost” (127.0.0.1) and accepting TCP/IP connections on port 5432?

![スクリーンショット 2020-09-10 22.17.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/661441/a5dece8b-f9b2-0609-3b25-77ef6b0e8699.png)

“`
% postgres -D /u

元記事を表示

AWSを使ってアプリケーションを公開する手順(5)アプリケーションを公開する

#はじめに
AWSを使ってアプリケーションを公開する手順を記載していく。
この記事ではアプリケーションを公開する。

#EC2のサーバにアプリケーションのコードをクローンする準備

##「.ssh」ディレクトリに移動する
以下のコマンドを実行し、「.ssh」ディレクトリに移動する。

“`
cd ~/.ssh/
“`

##ssh接続
以下のコマンドを実行し、EC2インスタンスにsshでアクセスする。
(ダウンロードしたpemファイル名が「xxx.pem」、ElasticIPが123.456.789の場合)

“`
ssh -i xxx.pem ec2-user@123.456.789
“`

##GithubにSSH鍵を登録する
EC2インスタンスからGithubにアクセスするために、EC2インスタンスのSSH公開鍵をGithubに登録する必要がある。
SSH鍵を登録しないとpermission errorとなりクローンできない。SSH鍵をGithubに登録することで認証されるようになりコードのクローンが可能になる。

以下のコマンドを実行し、EC2サーバのSSH鍵ペアを作成

元記事を表示

Ruby on Rails でsimple_calendar実装するまでの流れをまとめました。

##オリジナルアプリケーションでカレンダーを使った予約時間設定機能を実装したいと思いその流れをまとめました。

ruby ‘2.6.5’
rails ’6.0.0′
simple_calendar “~> 2.0”

`前提条件としてuserとdoctorでそれぞれ別のdeviseを作っています。`
以下関連URLです。
[複数のdeviseを作成して、別々のログイン画面を作る際のファイル作成からルーティング設定](https://qiita.com/kinpin/items/067eff7d2fbe74d85c83)
[複数のdeviseでログイン後、新規登録後のパスを変更したい。]
(https://qiita.com/kinpin/items/57b1657f9054189956c3)

**やりたい事**
[![Image from Gyazo](https://i.gyazo.com/16c51fd7117933bcaf98bd3d81a85108.png)](https://gyazo.com/16c51fd7117933bcaf98bd3d81a85108)

この

元記事を表示

Railsアプリを独自ドメインでssl公開した手順

##概要
今回そこそこ苦戦しながらポートフォリオのSSL対応したので忘れないうちに手順を書き留めておく。
殴り書き程度なのでこれを読んでSSL対応は難しいと思われます。

参考
https://qiita.com/iwaseasahi/items/1687426add4124899fe3#ec2%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%BE%E3%81%99

https://qiita.com/Yuki_Nagaoka/items/55ed1610cfc1f59398b1#2%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E8%A8%AD%E5%AE%9A

##前提

+ EC2にRailsアプリをデプロイ済
+ Nginx等のWebサーバーでhttpで外部公開している
+ 独自ドメインを取得している。
+ VPCなどで適切なネットワークを構築済
+ httpですでにアプリケーションにアク

元記事を表示

Ruby on Rails × DockerでRspecを導入

###目標
– rails × docker 環境でrspecを導入したい

##前提
– Docker on mac
– Ruby on Rails

## 手順

##1.Gemfileにgemを追加する
以下のgemを:develop, :testに追加する
gem “rspec-rails”
gem “factory_bot_rails”

“`:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
# テストフレームワーク
gem “rspec-rails”
gem “factory_bot_rails”
end
“`

##2.サーバーとは別のターミナルからrspecをインストールする
“`
MacBook-Air アプリ名 % docker-compo

元記事を表示

renderのcollectionオプションを使った繰り返し処理の省略

動作環境
Ruby 2.6.5
Rails 6.0.3.2

collectionを使うことでrenderで呼び出した部分テンプレートを繰り返し処理する場合は、省略して記述できることを学んだので、投稿してみました。

##collectionを使わない場合
“`ruby:index.html.erb
<% @hoges.each do |hoge| %>
<%= render partial: "huga", locals: {hoge: hoge} %>
<% end %>
“`
上記のコードは、部分テンプレートhugaを呼び出し、その中でhogeという変数を渡して繰り返し処理を行うというコードです。
これをcollectionを使うとどうなるのかを見てみましょう。

##collectionを使う場合
“`ruby:index.html.erb
<%= render partial: "huga", collection: @hoges %>
“`
こちらのコードは先ほどのコードと**全く同じ意味**を持ちます。3行のコードが1行で済むので、非常に楽に記述できることがわ

元記事を表示

【Rails】【Docker】コピペでOK! DockerでRails開発環境を構築する方法

#【Rails】【Docker】コピペでOK! DockerでRails開発環境を構築する方法

## 目次
* [構築イメージ](#構築イメージ)
* [動作環境・前提条件](#動作環境前提条件)
* [手順](#手順)
* [STEP1. Dockerfileを作成する](#step1-dockerfileを作成する)
* [STEP1.1 nginxのDockerfile](#step1-1-nginxのdockerfile)
* [STEP1.2 nginxの設定ファイル](#step1-2-nginxの設定ファイル)
* [STEP1.3 railsのDockerfile](#step1-3-railsのdockerfile)
* [STEP2. pumaの設定](#step2-pumaの設定)
* [STEP3. docker-composeの作成](#step3-docker-composeの作成)
* [STEP4. データベースの設定](#step4-データベースの設定)
* [STE

元記事を表示

【Appleサブスクリプションオファー】プロモーションオファー署名の作成方法

# tl;dr

Appleのサブスクリプションオファーのプロモーションオファーに関しての情報がなかった。
**これが、日本初の資料。**

# プロモーションオファーとは

### WWDC 2019動画
https://developer.apple.com/videos/play/wwdc2019/305

### Apple公式ドキュメント
https://developer.apple.com/jp/app-store/subscriptions/#subscription-offers

![7ec9cdbd-1f10-4e9a-a5a5-c76e2c99f9ee.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268339/d3a0fc1d-b2ef-1579-ff19-e540ae5624c6.png)

>対象となるのは、そのサブスクリプションを現在利用している、または過去に利用したことがあるお客様です。
これらのオファーによって、ユーザー数の拡大や維持のため、
独自のプロモーションを

元記事を表示

OTHERカテゴリの最新記事