小编Use*_*159的帖子

Elixir:使用vs import

use和之间有什么区别import

use是一种将给定模块用于当前上下文的简单机制

https://hexdocs.pm/elixir/Kernel.SpecialForms.html#import/2

从其他模块导入函数和宏

看起来有一点不同就是import让你挑选出特定的功能/宏,同时use带来一切.

还有其他差异吗?你什么时候用一个而不是另一个?

elixir

124
推荐指数
4
解决办法
2万
查看次数

docker ENV vs RUN导出

假设我想要结合这些命令

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 exportvs 设置变量ENV是否相同.

换句话说,Dockerfile中这些命令之间有区别吗?

ENV FOO bar
Run Code Online (Sandbox Code Playgroud)

VS

RUN export FOO=bar
Run Code Online (Sandbox Code Playgroud)

docker

55
推荐指数
2
解决办法
4万
查看次数

另一种退出IEX而不是ctrl-C的方法

我知道我们可以使用control-C退出IEX控制台.我很好奇是否有一个命令输入控制台也会做同样的事情.

elixir iex

30
推荐指数
4
解决办法
5492
查看次数

许可被拒绝创建扩展"uuid-ossp"

我正在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)

postgresql ruby-on-rails

22
推荐指数
3
解决办法
1万
查看次数

elixir Logger用于列表,元组等

我可以使用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中记录除字符串以外的列表,元组和数据类型?

logging elixir

22
推荐指数
1
解决办法
4715
查看次数

Rack中间件中的"env"变量是什么?

我知道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 ruby-on-rails

21
推荐指数
3
解决办法
2万
查看次数

使用Rspec测试中间件

我写了一些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)

rack rspec ruby-on-rails rack-middleware

18
推荐指数
1
解决办法
8015
查看次数

如何使Rails.logger.debug打印哈希更具可读性

我正在使用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)

密钥和值被压缩,无法解析.你们知道我应该怎么做才能解决这个问题吗?

debugging logging ruby-on-rails pretty-print

11
推荐指数
2
解决办法
1万
查看次数

require无法找到同一目录的.rb文件

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在同一目录中!如何解决这个问题?

非常感谢提前.我为这样的菜鸟问题道歉.

ruby

10
推荐指数
1
解决办法
7916
查看次数

尾部的-f标志有什么作用?

我知道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

unix terminal

10
推荐指数
1
解决办法
2862
查看次数