Googleに行きたい大学生

情報系とは無縁の大学生が就職難易度のトップともいわれてる夢の会社に入社できるか挑戦

一歩進んでニ歩下がって一歩進む

なんか寝違えてしまった。

首痛くて、環境構築終わらなくてイライラ。

 

ちょっと整理するために一回やったことを書き出してみよう。

 

・まず

http://neo4jrb.readthedocs.io/en/latest/Setup.html

読んで最初のコマンドを入力。

rails new myapp -m http://neo4jrb.io/neo4j/neo4j.rb -O

するとhttp://neo4jrb.io/neo4j/neo4j.rb

このサイトがそもそも存在せず失敗。

 

・次に試したこと

これがうまくいかないら、先にrails newで何か作って、gemとか自分で入れよう。

gemfileにgem 'neo4j' 9.4.0を追加。

bundle install

application.rbにrequire 'railtie'を追加。

class Application < Rails::Application

# ...

config.generators { |g| g.orm :neo4j }

end

 これを追加。

config/neo4j.ymlファイルを作成して

development:

type:http

url: http://localhost:7474

test:

type:http

url: http://localhost:7575

production:

type: http

url: http://neo4j:password@localhost:7000

を追加。

 

config/environment/development.rbに

config.neo4j.session.options = { faraday_configurator: proc do |faraday|

faraday.adapter :typhoeus

faraday.options[:open_timeout] = 5

faraday.options[:timeout] = 65

 end }

を追加。

 

app/models/faculty.rbを作成

class Faculty
  include Neo4j::ActiveNode
  id_property :code
  property :nametype: String
  self.mapped_label_name = '学部'
  has_many :in:universitiesorigin: :facultiesunique: true
  validates :name:presence => true
end

を追加。

rails db:migrate したけど...????

rails serverを立ち上げてみる。

rails コンソールでFaculty.createすると

=> #<Faculty code: nil, name: nil>

おーなんかファイル読み込まれてそう。

 

しかしFaculty.firstでは

ETHON: Libcurl initialized
ETHON: performed EASY effective_url=http://localhost:7474/db/data/schema/constraint response_code=0 return_code=couldnt_connect total_time=0.0
HTTP REQUEST: 3ms GET http://localhost:7474/db/data/schema/constraint (0 bytes)
Traceback (most recent call last):
2: from (irb):2
1: from (irb):2:in `rescue in irb_binding'
NameError (uninitialized constant Faraday::Error::ConnectionFailed)

んー、そもそもlocalhost:7474が立ち上がってないもんな。

 

・じゃあ、neo4j-rake_tasksをgemfileに追加

bundle install

rake neo4j:install[community-latest,development]

たくさんのファイルがインストールされる。

rake neo4j:start[development]

 

Starting Neo4j in development...
which: no java in (/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/bin:/home/vagrant/.rbenv/versions/2.6.5/bin:/home/vagrant/.rbenv/libexec:/home/vagrant/.rbenv/plugins/ruby-build/bin:/home/vagrant/.pyenv/plugins/pyenv-virtualenv/shims:/home/vagrant/.pyenv/shims:/home/vagrant/.pyenv/bin:/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin)
ERROR: Unable to find Java executable.
* Please use Oracle(R) Java(TM) 8, OpenJDK(TM) or IBM J9 to run Neo4j.
* Please see https://neo4j.com/docs/ for Neo4j installation instructions.
rake aborted!
Unable to run: db/neo4j/development/bin/neo4j start

 

というエラー。java探してるファイルがおかしいので、

/db/neo4j/development/bin/neo4jを見てみると
JAVA_HOMEとかJAVA_CMDがあり、エラーメッセージは

_find_java_cmd() {
  [[ "${JAVA_CMD:-}" ]] && return
  detect_os
  _find_java_home

  if [[ "${JAVA_HOME:-}" ]] ; then
    JAVA_CMD="${JAVA_HOME}/bin/java"
    if [[ ! -f "${JAVA_CMD}" ]]; then
      echo "ERROR: JAVA_HOME is incorrectly defined as ${JAVA_HOME} 
   (the executable ${JAVA_CMD} does not exist)"
      exit 1
    fi
  else
    if [ "${DIST_OS}" != "macosx" ] ; then
      # Don't use default java on Darwin because it displays a misleading dialog box
      JAVA_CMD="$(which java || true)"
    fi
  fi

  if [[ ! "${JAVA_CMD:-}" ]]; then
    echo "ERROR: Unable to find Java executable."
    _show_java_help
    exit 1
  fi
}

ここにあった。

$JAVA_HOMEの値がおかしいのだろうと思い、インストールしたところに変更

JAVA_HOME='C:\Java\jdk-13.0.2'

しかし、

"ERROR: JAVA_HOME is incorrectly defined as C:\Java\jdk-13.0.2
   (the executable C:\Java\jdk-13.0.2\bin\java does not exist)"
こっちのエラーが出た。
vagrant centosからC:\見れないのかなと思い
JAVA_HOME='home\vagrant\Java\jdk-13.0.2'に変更し、ファイルをそこにコピーした。
それでも同じエラー
自分でファイルの中見てみたらbin\java.exeってのがあるし、それやろって思うんやけど....
 
vagrantからlocalhost:7474を(vagrantではhttp://192.168.33.10:7474/)ができないから

起動できないから、dockerでrailsをやろうとした。これもうまくいかなかったんだが、ここに書くとどこに書いたかわからなくなるので別記事へ。

 

・じゃあ、dockerもだめなら、windows powershellでやってみようってなって、

まず、rails newでプロジェクトつくる、

上に書いたのと同じように進めていって、bin\neo4j consoleでlocalhost:7474にちゃんとneo4jが表示された!!

次にrails sでlocalhost:3000に行ったが、

uninitialized constant Faraday::Error::ConnectionFailed

なんか見たことあるエラーだな。

これがどこにあるのか全然わからないんだなー...

Started GET "/" for ::1 at 2020-03-20 21:46:40 +0900
HTTP REQUEST: 0ms GET http://localhost:7474/db/data/schema/constraint (0 bytes)

RuntimeError (missing dependency for Faraday::Adapter::Typhoeus: Could not open library 'libcurl': �w�肳�ꂽ���W� ��[����������܂���B
.
Could not open library 'libcurl.dll': �w�肳�ꂽ���W���[����������܂���B
.
Could not open library 'libcurl.so.4': �w�肳�ꂽ���W���[����������܂���B
.
Could not open library 'libcurl.so.4.dll': �w�肳�ꂽ���W���[����������܂���B
):

こんな意味不明な文字化けも。このまんま出てきた。

# If the constant was actually loaded, something else went wrong?
raise(e) if from_mod.const_defined?(const_name)
CoreExt::ActiveSupport.without_bootsnap_cache { super }
end
 
# Signature has changed a few times over the years; easiest to not
んーーーーどういうことだろう。
 
ここまで来るのに5日もかかってしまった。毎日7,8時間調べては試してでいろいろなことが理解できて来たけど、なんかコマンド一つ打つたびにエラーが出てなんで書いてある通りに進んでくれないんだろう、君は公式のドキュメントじゃないか..と悩んだり。
 
 
今日は疲れた。勉強の優先順位の中でこれができるようになることは今は一番上だと思ってる。明日も、一歩ずつ進むしかない。せめて毎日前日よりは進んでる気がするのが救い。