Ruby on rails File.dirname在ruby 2.2.3中返回错误路径
在Rails 4.2.0/ruby 2.2.3平台上安装rspec时,会生成一个错误:Ruby on rails File.dirname在ruby 2.2.3中返回错误路径,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,在Rails 4.2.0/ruby 2.2.3平台上安装rspec时,会生成一个错误: $ rails g rspec:install identical .rspec exist spec create spec/C:/Users/Jun C/AppData/Local/Temp/d20160221-13928-5s67uj/spec/spec_helper.rb C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:252:
$ rails g rspec:install
identical .rspec
exist spec
create spec/C:/Users/Jun C/AppData/Local/Temp/d20160221-13928-5s67uj/spec/spec_helper.rb
C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:252:in `mkdir': Invalid argument @ dir_s_mkdir - C:/D/code/rails_proj/engines/simple_projectx/spec/C: (Errno::EINVAL)
from C:/Ruby22-x64/lib/ruby/2.2.0/fileutils.rb:252:in `fu_mkdir'
问题在于线路:
create spec/C:/Users/Jun C/AppData/Local/Temp/d20160221-13928-5s67uj/spec/spec_helper.rb
这里的spec/C:/Users/Jun C/AppData/Local/Temp/d20160221-13928-5s67uj
应该指向Rails应用程序根目录下的spec子目录,即C:/d/code/Rails\u proj/engines/simple\u projectx/
。正确的路径应该是:
create C:/d/code/rails_proj/engines/simple_projectx/spec/spec_helper.rb
以下是ruby的fileutils.rb
部分:
def mkdir_p(list, options = {})
fu_check_options options, OPT_TABLE['mkdir_p']
list = fu_list(list)
fu_output_message "mkdir -p #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
return *list if options[:noop]
list.map {|path| remove_tailing_slash(path)}.each do |path|
# optimize for the most common case
begin
fu_mkdir path, options[:mode]
next
rescue SystemCallError
next if File.directory?(path)
end
stack = []
until path == stack.last # dirname("/")=="/", dirname("C:/")=="C:/"
stack.push path
path = File.dirname(path)
end
stack.reverse_each do |dir|
begin
fu_mkdir dir, options[:mode]
rescue SystemCallError
raise unless File.directory?(dir)
end
end
end
return *list
end
module_function :mkdir_p
alias mkpath mkdir_p
alias makedirs mkdir_p
module_function :mkpath
module_function :makedirs
OPT_TABLE['mkdir_p'] =
OPT_TABLE['mkpath'] =
OPT_TABLE['makedirs'] = [:mode, :noop, :verbose]
def fu_mkdir(path, mode) #:nodoc:
path = remove_tailing_slash(path)
if mode
Dir.mkdir path, mode
File.chmod mode, path
else
Dir.mkdir path #line #252 which causes error
end
end
.....................
Dir.mkdir path
是导致错误的行。如何使ruby
提交正确的路径
?我认为您应该获得官方RSpec存储库的支持: