2016-09-27 61 views
0

我一直在使用Ruby on Rails和postgresql,並且有人建議我應該安裝RVM(我認爲它是利用Phonegap)。由於我放置了RVM,我一直無法執行bundle install,這反過來意味着我不能再運行其他的rails命令。RVM和Bundler,byebug gem:不支持C擴展

很多閱讀並沒有給我一個答案,但我有很多想法。也許有人可以幫助將這些想法集中到解決方案中?

當我運行bundle install有3個寶石似乎是造成這個問題,但我認爲它們是相通的。他們是byebug 8.2.2pg 0.18.4binding_of caller 0.7.2

byebug-8.2.2/gem_make_out內容如下:

/home/damo/.rvm/rubies/jruby-9.0.5.0/bin/jruby -r ./siteconf20160927-16151-j7mhkf.rb extconf.rb 
NotImplementedError: C extensions are not supported 
<top> at /home/damo/.rvm/rubies/jruby-9.0.5.0/lib/ruby/stdlib/mkmf.rb:1 
require at org/jruby/RubyKernel.java:937 
(root) at /home/damo/.rvm/rubies/jruby-9.0.5.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1 
<top> at extconf.rb:6 
extconf failed, exit code 1 

當我看byebug issues它只是說,byebug不支持JRuby的。

我沒有任何問題之前,我安裝了RVM,我敢肯定,我讀了byebug被硬連線到Rails 4,我想告訴你我的Rails版本,但rails -v給我的迴應

Could not find proper version of railties (4.2.5) in any of the sources 
Run `bundle install` to install missing gems. 

這似乎是我的Catch 22!

+0

好吧,現在一切正常。基於下面的回答,我假設安裝RVM將我切換爲jRuby的默認值。在我設置了'rvm use ruby​​-2.3.0'並重新安裝'bundler'後,我可以'捆綁安裝'並修復東西。爲了確保我不會遇到類似的問題,我運行了'rvm default runy-2.3.0'。另外,我不得不'chmod'一些目錄來授予我安裝gem的讀/寫權限。 – fatherdamo

+0

要更改默認的ruby,正確的指令是'rvm - 默認使用'。重新啓動後,我仍然遇到'gem install pg -v'0.18.4'的一個小問題。我不知道爲什麼,但是我需要'sudo yum install postgresql-devel',這是我預計在現在需要使用的。無論如何,現在所有人似乎都在工作。 – fatherdamo

回答

1

這有點聽起來像你沒有在登錄shell中使用RVM。在Bash中,你可以運行bash -l,然後運行source ~/.bashrc(或者包含你的rvm調用行)。之後,試試rvm use ruby-2.2(或其他),如果你沒有得到「RVM不是函數」的錯誤,那麼你應該很好走。

注意RVM下你可能必須爲每個不同版本的紅寶石(和寶石)做手工gem install bundler,因爲紅寶石(和gemsets)RVM下活在自己的世界,和系統bundler往往是舊的。如果您正在重新使用ruby安裝,並且不使用或共享gemset,則bundler可能已經是最新的。

所以:使用登錄shell,做,如果需要的話安裝bundler,然後bundle install

最後但並非最不重要的一點,我喜歡使用.ruby-version文件,所以我不必手動切換紅寶石和寶石集,我可以判斷是否所有東西都從rvm info的輸出中工作。

+0

我記得有關設置RVM的問題,在我繼續之前,我沒有通過'RVM is a function'測試。基於@Doon的回答,我還有一些工作要做,但我想你們之間可能會有一些喜悅。但我以前認爲,;-) – fatherdamo

1

在安裝rvm之前使用jruby的地方在哪裏?似乎你的默認ruby更改爲jruby,而不是你以前使用的任何東西(系統紅寶石?)。

嘗試在軌項目的根目錄運行

rvm use system 

然後嘗試捆綁安裝,看看能否解決。如果是,那麼可以使用setup.ruby-version文件來控制每個項目使用哪個版本的ruby。

否則型

rvm use system --default 

設置默認紅寶石回到系統中的一個,並繼續像你在哪裏珍貴。

+0

感謝您的答覆。我沒有使用jruby,至少不知道我的知識。 當我運行'rvm use system' bash告訴我'警告:PATH沒有正確設置,'/home/damo/.rvm/gems/jruby-9.0.5.0/bin'不在第一位,通常是這個是由shell初始化文件引起的 - 檢查它們是否爲'PATH = ...'這似乎可能與上面的@eric答案有關。我會玩一玩,看看我能做些什麼。 – fatherdamo

+0

我敢打賭,你的rvm安裝線在錯誤的地方(例如'.bashrc' vs'.bash_profile')。 – Eric