一直能看到一些gem里面会有这样一句代码:
$:.unshift File.expand_path('..', __FILE__)
这句话是干什么用的呢
$:就是ruby的一个全局变量,也叫$LOAD_PATH,功能就是java中的classpath,用来加载类库的,当你require某个文件时,ruby就会从这个变量的值去查找,找不到会报LoadError。这个值其实就是一个包含了类库绝对路径的数组。
__FILE__这个变量代表文件自己的文件名,在foo.rb中puts__FILE__,结果就是foo.rb。
File.expand_path可以把路径转换成绝对路径,假设有这样一个文件/Users/kenshin/foo.rb,里面有File.expand_path('..', __FILE__),返回的结果就是/Users/kenshin。
unshift是数组的一个方法,功能就是把指定的值加到数组的最前面,[3,4].unshift(1,2) => [1,2,3,4]
所以这段代码的意思就是把当前文件所在的目录加到ruby的loadpath的最前面,在require文件时,ruby就会先从当前目录下去查找了。
分享到:
相关推荐
- 数组有很多内置方法,如push、pop、shift、unshift、slice、splice、concat、join等。 6. **函数(Functions)**: - 函数是一段可重用的代码块。使用`function`关键字定义,可以接受参数并返回值。 - ...
unshift ( "/Library/RubyMotion/lib" ) require 'motion/project' # if you use bundler require 'bundler' Bundler . require # if you are not using bundler require 'rubygems' require 'ib' Motion :: ...
3. **数组和循环语句(vue-数组、循环语句.html)**:Vue提供了响应式的数组操作,如`push`、`pop`、`shift`、`unshift`、`splice`、`sort`和`reverse`,以及`v-for`指令来遍历数组。在这个文件中,可能会学习如何在...
lib = File.expand_path("lib", __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require "http/version" Gem::Specification.new do |gem| gem.authors = ["Tony Arcieri", "Erik Michaels-...
可路由 UIViewController-> URL路由器。 @router . map ( "profile/:id" , ProfileController ) ... unshift ( "/Library/RubyMotion/lib" ) require 'motion/project' require 'routable' Motion
unshift @poly_bits, 0; # 添加新的最右边的位 } return bit_array_to_string(@poly_bits); } sub bit_string_to_array { ... } sub bit_array_to_string { ... } ``` 在这个例子中,`crc_calculate`函数接受...
require File.expand_path('../file_to_require', __FILE__) # 方法三 require File.dirname(__FILE__) + '/file_to_require' # 方法四 $LOAD_PATH.unshift(File.dirname(__FILE__)) require 'bar' ``` ...
#### 概述 ... #### 数组概述 ...数组支持单维和多维结构,这使得它可以轻松处理复杂的数据集合。...##### 1....##### 2....##### 3....##### 4....##### 5....##### 6....##### 7....##### 8....##### 9....##### 10....##### 11....##### 12....
这可以通过修改Ruby的加载路径实现,例如在测试代码头部添加`$:.unshift File.join(File.dirname(_FILE_), “..”, “lib”)`,这将确保Ruby能找到与测试文件相对应的库文件。 Test::Unit还提供了丰富的断言方法,...
4. **数组**:数组字面量、数组方法(push, pop, shift, unshift, splice, slice, concat, join, map, filter, reduce等)。 5. **字符串**:模板字面量、字符串方法(length, charAt, slice, substring, includes,...
array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i ($ips); $i++) { if (!preg_match("/^(10|172\.16|192\.168)\./", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER...
1. **array_unshift(1.目标数组2.压入队的值)** - 功能:将一个或多个元素插入数组的开头。 - 示例:`array_unshift($arr, 'grape');` 2. **array_shift(1目标数组)** - 功能:从数组开头移除一个元素。 - ...
- **示例**:`array_unshift($arr, 'a', 'b');` 45. **array_values** - **功能**:返回数组中所有的值。 - **示例**:`$values = array_values($arr);` 46. **array_walk_recursive** - **功能**:对数组中的...
随机函数 ...var unshift = arrayRef.unshift; // Single element a.unshift(-1); // a = [-1, 1, 2]; // Callback socket.on('users:new', _.bind(_.call, $scope.users.unshift, $scope.users)); //
在IT行业中,电子签名是一种重要的技术,特别是在数字化和无纸化办公的趋势下,它为确保文档的安全性、合法性和不可篡改性提供了便利。这里我们关注的是一款与小程序结合的手写板电子签名解决方案,该解决方案包含在...
5. **数组方法**:push、pop、shift、unshift、slice、splice、concat、map、filter、reduce等。 6. **事件处理**:DOM事件的监听与触发,事件冒泡与捕获,事件对象。 7. **DOM操作**:选择元素(getElementById, ...
flash action script 经典字典教程大全,学flash必备 -- --(递减) ++ ++(递增) ! !(逻辑 NOT) ......._highquality _highquality、Button._highquality、MovieClip._highquality、TextField._highquality ...
:cooking:JavaScript算法的成分 :tomato: ... unshift ( number ) ; number = Math . floor ( number / 10 ) ;} while ( number > 0 ) // arr=[1,5,5] :tomato: 十六进制转换十进制->十六进制let dec = 123 ;let hex
e:c,d.paused=a,d.time=b,d.runTime=b-Ticker._pausedTime,Ticker.dispatchEvent(d)}for(Ticker._tickTimes.unshift(Ticker._getTime()-b);Ticker._tickTimes.length>100;)Ticker._tickTimes.pop();for(Ticker._...