久々のRailsメモ: devise、scaffold、scaffoldによるviewエラー

 

ユーザー認証: deviseを用いてメールによる認証を行う

qiita.com

他: 

ログイン認証も簡単!Railsでのdeviseの使い方 | TechAcademyマガジン

 

 

Scaffold

tanibkk.hatenablog.com

 

Scaffoldによるviewでのエラー対応:

qiita.com

Library not loaded: libmysqlclient.18.dylib (LoadError) の対処

環境

mysql 5.7

homebrew 1.3.2

mac Sierra 10.12.4

 

まとめ記事:

 

未解決だった問題:

新たに入れた、ダウングレードしたバージョンのmysqlは確かにlibmysqlclient.18.dylibをパソコンに入れていたが、

RailsのMysql2が探すパスではなかった。

 

解決策:

1:

$ which mysql

mysqlのファイルがあるパスを特定

2:

$ ls

dylibファイルを見つける

 

3:ファイルを Railsがdylibファイルを探すファイルにコピペする

ーーーーーーーーーーーーー

 

 

その後、Rails サーバーを立ち上げようとするとエラー。

エラー0: mysql root のパスワードが違う

解決: 設定し直し

https://stackoverflow.com/questions/6474775/setting-the-mysql-root-user-password-on-os-x

 

エラー1:

Puma caught this error: Unknown database 'pomodoro-life_development' (ActiveRecord::NoDatabaseError)

エラー2:

$ rake db:migrate
rake aborted!
ActiveRecord::NoDatabaseError: Unknown database 'pomodoro-life_development'

Mysql2::Error: Unknown database 'pomodoro-lif...

 

解決:

railsで指定した名前のデータベースをMysqlに作る

$ bundle exec rake db:create

$ rake db:migrate

$ mysql.server start

 
$ rails s
 

参考: railsのapp作成でmysqlを使用する時の導入とハマるところ rake db:createができるまでの流れ - Qiita

用語集

目次:

ディレクト

パス

ターミナル/コマンドプロンプト

コマンド

ターミナルで「~~の場所にとどまる」

geth

gethコンソール

ブロックチェーンネットワークが立ち上がっている時 /いない時

 

一覧:

ディレクト

=ファイル

*厳密には機能によって言い換えているが同じもの

ディレクトリとは パソコン初心者講座

 

パス

ファイルのある場所のこと。表記が特別。

例:

Macの場合:/Users/haru/projects

Windowsの場合: C:¥User¥Haru¥projects

「ファイルのパス(path)」とは保存場所への道しるべ - パソコン用語解説

 

Macのみ:ターミナル

コンピュータへの命令を入力するためのアプリ

普段できるよりも詳しい命令を可能にする。いわば品数の多いメニューのようなものだ。
Windowsではコマンドプロンプトと呼ばれる。

今さら聞けない!ターミナルの使い方【初心者向け】 | TechAcademyマガジン

 

Windowsのみ: コマンドプロンプト

コンピュータへの命令を入力するためのアプリ

普段できるよりも詳しい命令を可能にする。いわば品数の多いメニューのようなものだ。

Macではターミナルと呼ばれる

今さら聞けない!コマンドプロンプトの使い方【初心者向け】 | TechAcademyマガジン

 

コマンド

ターミナルやコマンドプロンプトで入力するコンピュータへの命令のこと

一定のルールが決められてあり、決まった命令をすると決まった反応がある。

コマンドの表記については、資料では 「$」という文字で始まることがあるが、これはコマンドの一部ではなく、その行がコマンドであることを示すための印である。コピペするときには$はコピペしない。

 

ターミナルで「~~の場所にとどまる」

ターミナルやコマンドプロンプトでは、現在いるパスが、文字を入力できる場所の左側に表示されている。 

例: 

Macの場合:/Users/haru/projects

Windowsの場合: C:¥User¥Haru¥projects

そのディレクトリから移動することもできるが、移動をしないということ。

     移動方法:

     Mac: cd 移動先のパス

     Windows: chdir 移動先のパス

 

geth 

今回用いるEthereum(イーサリアム)ブロックチェーンへ命令をするためのツール

これはイーサリアムブロックチェーンへの連絡を可能にする、携帯電話のようなものだ。

これが用意した文法を用いて、命令(コマンドを打って様々な操作)をすることができる。

 

gethコンソール

イーサリアムブロックチェーンの、特に1つのネットワークを指定するとコンソールを立ち上げることができる。これは、このネットワークに対して、 gethを用いてさらに詳しく命令を出すことができる、私たちにとってのメガホンのようなものだ。

 表示されているときには「>」という印がターミナル/コマンドプロンプト左側に出ている。

また、ネットワークで主要な動きがされるたびにその記録がコンソールに表示されるという鏡の役割も果たしている。

 

ブロックチェーンネットワークが立ち上がっている時 /いない時

gethコンソールがターミナル/コマンドプロンプトで表示されている/いない時

*立ち上がっている時のみEthereum Walletを起動しましょう

 

Ethereum Wallet: no data is deployed on this contract

エラーのでたプログラム: Wallet内のリンクから参照できる公式チュートリアルサイト

Create a cryptocurrency contract in Ethereum

 

エラー: コントラクトがConfirmされてもエラー文面が出る。

no data is deployed on this contract

 

解明: プログラム内容のせいでこちらは Ethereum Wallet 0.9.0では使えない。

解決策: このプログラムを使う。

Subcurrency Example というプログラムをコピペ

プログラム冒頭に pragma solidity ^0.4.13; を追加して利用。

Solidity Tutorials | Ethereum Builder's Guide

 

ーー解決策ではなかったこと

解決策 1:

For contract to be succesfully published (especially on TestNet) your Maximum fee should be significantly greater than estimated.

解決している問題:

原因:

This happens if the transaction with your contract was mined, but them the wallet couldn't find data on this address using web3.eth.getCode(address). This happens if you don't provide enough gas for storing the contract.

 it was executed but not stored. This is an encase and shouldn't happen normally.

 from Mist: "No data is deployed on the contract address!" - Ethereum Stack Exchange

 

Mistでの解決策2: I clicked on the blue link and made both values the same

from Get error no data is deployed on this contract · Issue #133 · ethereum/wiki · GitHub

 

解決策3: 異なるプログラム

https://ethereum.stackexchange.com/questions/5674/following-token-tutorial-on-ethereum-org-get-error-message-no-data-is-deployed

Windowsでのgethセットアップ

【はじめに】

Ethereumは開発者向けに作られた代表的なブロックチェーンネットワークであり、また現在におけるビットコインの次の総計価値を誇る仮想通貨の基盤技術です。このマニュアルでは、その代表的なクライアントであるGeth(go-ethereum)を用いて、パソコンにEthereumのテスト環境であるプライベートネットワークを立ち上げ、接続します。プライベートネットワークは、そのパソコンの中で完結するネットワークです。他のテスト環境にはMain net とTest netと呼ばれる環境がありますが、それらに比べるとプライベートネットワークでは保存すべきデータ量が少ないため、容易にEtherを採掘できます。

また、このEtherは仮想通貨としてトレードされている、通貨として価値があるEtherではなく、あくまでもテスト環境でのEtherであり、貨幣的価値はありません。

 

用語:ファイル(=ディレクトリ)

バージョン: Windows 8 (64bit)

gethバージョン: 1.6.7

 

手順

0:プログラミング用のテキストエディタが入っていない場合は入れる

(デフォルトのテキストエディタではのちのJSONファイル作成ができないため)

例: sublime textというエディタ

Sublime Text: The text editor you'll fall in love with

 

1:Archiveというファイルをクリックしてインストールする

https://geth.ethereum.org/downloads/

 

注意:トップばーのボタンをクリックしないで、スクロールして見えてくる下のリストから、Windowsタブを選択して、パソコンが32bitか64bitに応じて該当ファイルをインストールする。

f:id:haruokny:20170906204708p:plain

 

注意2:Installerはインストールしなくていいのかもしれない。

 

 

2:zipファイルを解凍する

 

3:ポップアップ画面に対応する

Agree, OKなどを押して進む。

途中でgethを保存する先を決める画面がある。パスを設定する場合は設定して、

パスを忘れないようにどこかに記録/記憶して、進む。

終わったら画面を閉じる。

 

4:コマンドプロンプトまたはPowerShellを開き、その中で、gethが保存されている場所へ移動する。

コマンド例:

PowerShellの場合:  chdir 'C:¥Program Files¥Geth'

コマンドプロンプトの場合: cd 'C:¥Program Files¥Geth'

 

5:そのディレクトリにgeth.exeがあることを確認する。

PowerShellの場合: ls

コマンドプロンプトの場合: dir

 

ーー

注意:このディレクトリからは移動せず、以下のステップをおこなってください。

必要であれば、コマンドプロンプトの新しいウィンドウを別途開きコマンドを打ってください。

新たなウィンドウを開くコマンド: コマンドプロンプト: start cmd.exe 

ーー

注意:geth のみでコマンドを打つと、gethネットワークが接続して、大量のデータをダウンロードし始めてしまうので、打たないようにする。

ーー

 

6:今回のネットワークで使うためのデータを保存するためのファイルを作成する

どこか自分の決めた場所に、自分で決めた名前のファイルを作ります。

gethfileという名前にした場合の例: C:¥Users¥Haruko¥Documents¥gethfile

 

6:そのファイルの中にネットワークの最初のブロックを作成する

ここでは「mygenesis.json」という名前のファイルを作成します。

ファイル名はこちらにすることを推奨します。

Windowsにデフォルトで入っているテキストエディタではなく

プログラミング用のエディタを用いてファイルを作成してください。

テキストエディタで作成してしまうと、ファイル名がどうしても「mygenesis.json.txt」のように 「.txt」がついてしまい、使えません。

 

中身には以下を書き、保存します。

{ "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x400", "alloc": {}, "coinbase": "0x3333333333333333333333333333333333333333", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x", "gasLimit": "0x8000000", "config": {} }

 

http://qiita.com/oggata/items/eea4d5e37f38785f6079 より

 

7:同じファイルの中にネットワークのデータを保存するためのファイルを作成する

 名前は自分で決めて結構です。

gethdataという名前にした場合の例: C:¥Users¥Haruko¥Documents¥gethfile¥gethdata

 

8:今後の処理のために、このファイルのあるディレクトリのパスを明らかにしておきます。

PowerShell: pwd

コマンドプロンプト: dir

結果の例: C:¥Users¥Haruko¥Documents¥gethfile

 

9:プライベートネットワークの最初のブロックを作成する

コマンドプロンプト/PowerShellにて、以下のコマンドを打ちます。 

geth -datadir データ保存用のディレクトリのパス init 最初のブロックのファイルを作成したディレクトリのパス¥mygenesis.json

例: geth -datadirC:¥Users¥Haruko¥Documents¥gethfile¥gethdata init C:¥Users¥Haruko¥Documents¥gethfile¥mygenesis.json

 

以下のような文字列が出ていれば成功です。 

WARN [09-05|16:56:13] No etherbase set and no accounts found as default

省略

INFO [09-05|16:56:13] Writing custom genesis block

INFO [09-05|16:56:13] Successfully wrote genesis state         database=lightchaindata                                                             hash=6231b0…a0300b

  

10:プライベートネットワークのコンソール(コントローラ)を立ち上げる

コマンドプロンプト/PowerShellにて、以下のコマンドを打ちます。 

geth -datadir データを入れるディレクトリのパス -networkid 2 -nodiscover -maxpeers 0 -port 0 console

例: geth -datadir C:¥Users¥Haruko¥Documents¥gethfile¥gethdata -networkid 2 --nodiscover -maxpeers 0 -port 0 console

 

文字列が出てきて、20秒以内にこのような三角が出てきたら成功しています。

 

こちらで様々なコマンドを打ち、ネットワークでの動作を指示することができます。

手順例: 

Ethereumクライアント「Geth」を試してみる - Qiita

一覧: 

Command Line Options · ethereum/go-ethereum Wiki · GitHub

 

11:ネットワークを閉じる

>のところに

exit

と打つとコンソールを閉じることができ、ネットワークも閉じられます。

データは保存されているので消えることはありません。

 

 

 

 

Ethereum Walletがgethで立ち上げたプライベートネットを認識しない

 

github.com

 

参考

1:

stackoverflow.com

2:

What worked for me was opening the ethereum wallet from the console specifying the ipcpathwith --rpc like this (from the ethereum wallet location)

Ethereum\ Wallet.app/Contents/MacOS/Ethereum\ Wallet --rpc /ipcPath/geth.ipc

This post details exactly all the steps needed to connect ethereum wallet to a private network

ethereum.stackexchange.com

類似例

github.com