[Ruby]rubyで困った話(調査中)

★まだ未解決です。状況をメモしておきます。★

間違えないための注意点

公式の手順で行うこと。
他のページを参考にする場合も、記事の作成日が新しいものを確認すること。
間違ってlinuxやwindowsの手順を参考にする場合は、きちんと違いを認識した上で参考にすること。
https://brew.sh/index_ja.html

背景

おそらく2、3種類のgemやrubyが混在していることが原因でrailsコマンドでエラーになったりと色々ハマりました。

rubyやrailsの導入方法がいくつも(インストールやソースコードからなどなど)あり、バージョンでも違っていたりするのに適当にググってみたサイトの手順を行っているとパスの不整合などが起きたのかなと思います。

その時の状況をまとめておきます。
だれもこんなことにはならないと思いますが。。。

■環境

macOS Sierra 10.12.6?
rubyのあった場所
その1.

/usr/bin/ruby ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

→mac標準

その2.

/Users/Nori/.rbenv/shims/ruby ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]

→rbenvからインストールした

その3.

/usr/local/opt/ruby/bin /usr/local/Cellar/ruby/バージョン(例:2.2.2)/bin/ruby

→Homebrew($ brew install ruby)でインストール?

その4.
RVM( http://rvm.io/ )でインストール

$ ruby -e \'puts $:\'
/usr/local/Cellar/ruby/2.4.2/lib/ruby/gems/2.4.0/gems/did_you_mean-1.1.0/lib /usr/local/lib/ruby/site_ruby/2.4.0
/usr/local/lib/ruby/site_ruby/2.4.0/x86_64-darwin16
/usr/local/lib/ruby/site_ruby /usr/local/lib/ruby/vendor_ruby/2.4.0
/usr/local/lib/ruby/vendor_ruby/2.4.0/x86_64-darwin16
/usr/local/lib/ruby/vendor_ruby
/usr/local/Cellar/ruby/2.4.2/lib/ruby/2.4.0
/usr/local/Cellar/ruby/2.4.2/lib/ruby/2.4.0/x86_64-darwin16

■やろうとしていたこと
以下のサイトを参考にWebAPI環境を用意しようとした
スマホアプリを作るために5分でWebAPIを作る方法を全力で超親切に解説する https://cre8cre8.com/rails/use-myapi-web-api-app.htm

■症状
最初、railsコマンドがないと表示される

$ rails new api
rbenv: rails: command not found

まぁ、インストールしてなかっただけだと思って、適当に検索してインストールしてみる。
→インストールしても変わらず。

なんで?パスも通っているし、railsの実行ファイルも存在していた。
ただし、以下の場所ではなかった。

~/.rbenv/shims/rails

以下の参考URLを元に、試したがコマンドでエラーが発生(メモし忘れ)

$ gem install rails && rbenv rehash

参考:https://qiita.com/ikm/items/cdc7026059ed65fb109d
そもそも、~/.rbenv/の下にファイルができない
なんでか。。。

以下、リンクメモ

  1. MacでOperation not permittedが出た時の対処法
    https://qiita.com/mym/items/90bf9f0a6417bd785bb0

  2. gemでTo eliminate this warning, please install libyaml and reinstall your ruby.のエラーが出た場合の対処
    https://qiita.com/dvorak__/items/8e6ace5236407096fef1

  3. Upgrading to Ruby 2.4.1_1 breaks gem command.
    https://github.com/Homebrew/homebrew-core/issues/11636

    rm -rf /usr/local/lib/ruby/gems/2.4.0/gems/psych-2.2.4
    rm -rf /usr/local/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-16/2.4.0/psych-2.2.4
    bundler: failed to load command: spring (/usr/local/bin/spring)
    $ rbenv install 2.4.0
    ~~略~~
    BUILD FAILED (OS X 10.12.6 using ruby-build 20170914)
    ~~略~~
    compiling zlib.c
    linking shared-object zlib.bundle
    *** Following extensions failed to configure:
    ../.././ext/gdbm/extconf.rb:0: Failed to configure gdbm. It will not be installed.
    *** Fix the problems, then remove these directories and try again if you want.
    linking ruby
    Generating RDoc documentation
    dyld: lazy symbol binding failed: Symbol not found: _utimensat
    Referenced from: /private/var/folders/qq/p4srrcdj7lg9j8dhd_n231gc0000gp/T/ruby-build.20171020152808.21704/ruby-2.4.2/./ruby
    Expected in: /usr/lib/libSystem.B.dylib
     
    dyld: Symbol not found: _utimensat
    Referenced from: /private/var/folders/qq/p4srrcdj7lg9j8dhd_n231gc0000gp/T/ruby-build.20171020152808.21704/ruby-2.4.2/./ruby
    Expected in: /usr/lib/libSystem.B.dylib

    →xcodeのツール?のインストールが必要

    $ xcode-select --install

    もう一度、rbenv install 2.4.0すると成功した。
    ~/.rbenv/shims/ の下にもrubyがいることを確認

    $ rbenv versions
    * system (set by /Users/User/.rbenv/version)
    2.4.0
    $ rbenv global 2.4.0
    $ rbenv versions
    system
    * 2.4.0 (set by /Users/User/.rbenv/version)

    Rails5のAPIモードを超速で試す
    https://qiita.com/master-of-sugar/items/7f76bed026e64ec1cceb

    $ rails new rails-api --api
    ~~略~~
    Use `bundle info [gemname]` to see where a bundled gem is installed.
    run bundle exec spring binstub --all
    bundler: failed to load command: spring (/usr/local/bin/spring)
    Gem::Exception: can't find executable spring for gem spring. spring is not currently included in the bundle, perhaps you meant to add it to your Gemfile?
    /Users/User/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0.pre.3/lib/bundler/rubygems_integration.rb:457:in `block in replace_bin_path'
    /Users/User/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0.pre.3/lib/bundler/rubygems_integration.rb:477:in `block in replace_bin_path'
    /usr/local/bin/spring:23:in `<top (required)>`

    以下の処理が行われていない。。。
    なんでか。
    強制的にインストールするようにした(group :〜〜とendを削除)ら通った。

    $ vi Gemfile
    group :development do
    gem 'listen', '>= 3.0.5', '< 3.2'
    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
    gem 'spring'
    gem 'spring-watcher-listen', '~> 2.0.0'
    end

コメント

タイトルとURLをコピーしました