use
和之间有什么区别import
?
use是一种将给定模块用于当前上下文的简单机制
https://hexdocs.pm/elixir/Kernel.SpecialForms.html#import/2
从其他模块导入函数和宏
看起来有一点不同就是import
让你挑选出特定的功能/宏,同时use
带来一切.
还有其他差异吗?你什么时候用一个而不是另一个?
假设我想要结合这些命令
RUN command_1
ENV FOO bar
RUN command_2
Run Code Online (Sandbox Code Playgroud)
成
RUN command_1 && export FOO=bar && command_2
Run Code Online (Sandbox Code Playgroud)
并且想知道用RUN export
vs 设置变量ENV
是否相同.
换句话说,Dockerfile中这些命令之间有区别吗?
ENV FOO bar
Run Code Online (Sandbox Code Playgroud)
VS
RUN export FOO=bar
Run Code Online (Sandbox Code Playgroud) 我知道我们可以使用control-C退出IEX控制台.我很好奇是否有一个命令输入控制台也会做同样的事情.
我正在postgresql上构建一个Rails项目,但是当我
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
permission denied to create extension "uuid-ossp"
Run Code Online (Sandbox Code Playgroud)
这是我的database.yml的样子:
app_common: &app_common
adapter: postgresql
host: 127.0.0.1
port: 5432
encoding: unicode
pool: 5
username: root
password:
Run Code Online (Sandbox Code Playgroud) 我可以使用elixir记录器来检查字符串
> str = "string"
> Logger.info "Here is a #{str}"
[info] Here is a string
Run Code Online (Sandbox Code Playgroud)
但是当我记录一个列表时,它看起来并不漂亮
> list = [1,2,3,4,5]
> Logger.info "Here is a list: #{list}"
[info] Here is a list: ^A^B^C^D^E^F
Run Code Online (Sandbox Code Playgroud)
当我记录关键字列表时,它会出错
> kwl = [a: "apple", b: "banana"]
> Logger.info "Here is a keyword list: #{kwl}"
** (ArgumentError) argument error
(stdlib) :unicode.characters_to_binary([a: "apple", b: "banana"])
(elixir) lib/list.ex:555: List.to_string/1
Run Code Online (Sandbox Code Playgroud)
如何在Elixir中记录除字符串以外的列表,元组和数据类型?
我知道Rack中间件过滤器是一个带有初始化和调用方法的Ruby类.我知道call方法采用"env"参数.像这样的东西:
class MyFilter
def initialize(app)
end
def call(env)
end
end
Run Code Online (Sandbox Code Playgroud)
我的问题是:"env"参数究竟发送给"call"的是什么?这与Rails ENV环境(即开发,测试,生产)相同.
谢谢!
我写了一些Rack-Middleware,现在我正试着用Rspec测试它.但所有Rack-Middleware都使用'app'参数进行实例化,该参数代表Rails应用程序本身.你们怎么在Rspec嘲笑这个?
例如,
describe MyMiddleWare do
let(:app) { # How do I mock a Rails app object here? }
subject { MyMiddleWare.new(app: app) }
it 'should blah blah blah' do
# a bunch of tests go here
end
end
Run Code Online (Sandbox Code Playgroud) 我正在使用Rails.logger.debug打印变量进行调试.问题是它以不可读的格式打印哈希(无法区分键和值).例如,我将以下行添加到我的代码库中
#code_base.rb
my_hash = {'a' => 'alligator', 'b'=>'baboon'}
Rails.logger.debug my_hash
Run Code Online (Sandbox Code Playgroud)
然后我启动我的rails应用程序并输入
tail -f log/development.log
Run Code Online (Sandbox Code Playgroud)
但是当my_hash被打印出来时,它看起来像
bbaboonaalligator
Run Code Online (Sandbox Code Playgroud)
密钥和值被压缩,无法解析.你们知道我应该怎么做才能解决这个问题吗?
Ruby中的require命令究竟是如何工作的?我使用以下两个位于同一目录中的文件对其进行了测试.
test.rb
require 'requirements'
square(2)
Run Code Online (Sandbox Code Playgroud)
requirements.rb
def square(x)
x*x
end
Run Code Online (Sandbox Code Playgroud)
但是当我在文件"test.rb"和"requirements.rb"所在的目录中运行ruby test.rb时,我收到错误:
/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- requirements (LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from test.rb:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我认为这意味着它无法找到requirements.rb文件.但它与test.rb在同一目录中!如何解决这个问题?
非常感谢提前.我为这样的菜鸟问题道歉.
我知道tail打印文件的最后几行.我阅读了尾巴的文档
man tail
Run Code Online (Sandbox Code Playgroud)
它说
该
-f
选项导致尾部在到达文件结尾时不停止,而是等待将其他数据附加到输入.
我测试了命令
tail -f sample.txt
Run Code Online (Sandbox Code Playgroud)
和
tail sample.txt
Run Code Online (Sandbox Code Playgroud)
并看到了有什么不同.但有人可以提供一个真实的例子,说明为什么他们会使用tail -f
而不仅仅是tail
?
elixir ×3
logging ×2
rack ×2
debugging ×1
docker ×1
iex ×1
middleware ×1
postgresql ×1
pretty-print ×1
rspec ×1
ruby ×1
terminal ×1
unix ×1