上午,莫名其妙的rails app不能用了,rails -v一查发现不存在。ruby -v发现是2.0的版本。很着急上火,因为很少使用过rvm这个ruby版本控制器。所以照官网文档。从新安装ruby,然后发现还是rail没有安装,后来决定从新安装rails。
在document/upgrade 发现一条命令
$ rvm gemset update
可以全部更新gem。于是我就更新了,rails app也可以用了。这就是悲剧的开始😢😢😢。
下午,从开了一个rails app准备练习一下缓存。结果发现rails的命令 在编译器根本不动,连rails -h都很慢。
查找谷歌没答案,stack overflow找到一条类似问题,没有加🌟的回答,看了一下评论疑似gem安装太多的话会让程序变慢。
于是我想到了上午自动更新gem的命令。
先尝试更好当前使用的ruby版本,使用rvm default use 2.4.0但仍然很慢.
于是看官网操作,准备删除所有安装的gem.不过不明白empty和delete的区别。
先尝试empty。 用rvm gemset empty,提示满屏幕的uninstalled XXX。果然全部删除了,但保留了这个gemset。✅,rails 实现编译器命令,速度正常了。
后来使用rvm gemset create my_set建立了一个新的gemset。然后使用rvm gemset delete my_set 删除了这个目录。
⚠️,可以建立不同的gemset,对于不同的项目。
啊啊啊❌,又不行了rails generate -h 超慢。
祭出大招,rvm remove ruby-2.31和之前的版本,然后再次rvm gemset empty.
老问题:但还是很慢。无语了。此时是下午4点
彻底删除ruby再从新安装又报告错误,安装不了。删除rvm, 删除命令:rvm implode(不会很干净,我怕影响后续安装ruby,还查找方法试图干净删除)。
可是安装完rvm后,安装ruby,还是报告错误❌,此时的我还没有学会仔细看报错的内容。
看ruby-china上的解决办法,各类网页。此时已是下午6点。
⚠️关键是,没有遇到和我完全一样的错误,别人的错误的解决方法不适合我。
此时的我已经学会了看隐藏文件使用command+shift+. , 学会了看日志.make.log。并对比自己的问题和他人的问题。就是找一样的解决方法。
晚上7点多吃完晚饭。 抑郁。网上有说可能是编译的问题,而编译问题一般是xcode的问题,尝试xcode-select --install,没用不是这个地方的问题
在ruby-China上继续浏览相关文章。发现一篇文章提示,应该把关键的错误信息粘体到谷歌上面,任何问题都有答案,我尝试一下把。
在.rvm/log/../make.log中:
+__rvm_make:0> make -j4
CC = gcc
LD = ld
LDSHARED = gcc -dynamiclib
CFLAGS = -O3 -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -Wdivision-by-zero -Wdeprecated-declarations -Wextra-tokens -fno-common -pipe
XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I/usr/local/opt/libyaml/include -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl@1.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -I. -I.ext/include/x86_64-darwin16 -I./include -I. -I./enc/unicode/10.0.0
DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib -install_name /Users/chentianwei/.rvm/rubies/ruby-2.5.1/lib/libruby.2.5.dylib -compatibility_version 2.5 -current_version 2.5.1 -fstack-protector -framework Foundation -fstack-protector -framework Foundation
SOLIBS = -lpthread -ldl -lobjc
LANG =
LC_ALL =
LC_CTYPE = UTF-8
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
compiling ./main.c
compiling dmydln.c
compiling miniinit.c
compiling dmyext.c
compiling miniprelude.c
translating probes probes.d
compiling bignum.c
compiling class.c
compiling compar.c
error: error reading '/dev/fd/8'
1 error generated.
clang: error: unable to remove file: Operation not permitted
dtrace: failed to compile script probes.d: Preprocessor failed to process input program
make: *** [probes.h] Error 1
make: *** Waiting for unfinished jobs....
+__rvm_make:0> return 2
error: error reading '/dev/fd/8' 放到谷歌上查找:竟然第一条就是解决办法!!!https://github.com/rvm/rvm/issues/4313
答案是:I have had a similar problem "error: error reading '/dev/fd/7'". In my case it helped to deactivate the antivirus software Avira.使反病毒程序小红伞无效。惊人!!!杀毒软件,😢。