小编Ale*_*kin的帖子

安装json gem'mkmf.rb时出错无法找到ruby的头文件'

对于上下文,它在具有防火墙的远程服务器上.我正在通过代理设置我的环境.我有ruby 1.8.7.当我尝试宝石安装..

sudo gem install --http-proxy <host address>:<port> json
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Building native extensions.  This could take a while...
ERROR:  Error installing json:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h

Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/json-1.8.1 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
Run Code Online (Sandbox Code Playgroud)

由于我不确定问题是什么,我用Google搜索并找到了这些

任何提示?谢谢!

ruby json rubygems

347
推荐指数
11
解决办法
21万
查看次数

将双引号分隔符添加到csv文件中

我有许多文本文件,其中包含无线电节目标题,其中每个项目都在一个单独的行上,例如:

15 by 15
15 Minute Drama
Adrian Mole
Afternoon Drama
Afternoon Reading
etc
Run Code Online (Sandbox Code Playgroud)

我想在每一行添加双引号作为分隔符,例如:

"15 by 15"
"15 Minute Drama"
"Adrian Mole"
"Afternoon Drama"
"Afternoon Reading"
etc
Run Code Online (Sandbox Code Playgroud)

我以为我可以在Excel中执行此操作但无法找到方法.我真的不介意解决方案是基于Excel还是其他东西,只要我不必手动完成.

有人可以帮忙吗?

csv excel double-quotes

21
推荐指数
4
解决办法
9万
查看次数

没有将nil隐式转换为String错误

我有一个ruby脚本,它将通过从另一个文件中获取和合并值来创建两个文件.

#Resources
require 'rubygems'
require 'csv'

col_date = []
col_constant1 = []
col_constant2 = []
col_appYear = []
col_statsDesc = []
col_keyStats =[]
col_weeklyTotal=[]


weekly_total = []

fname = "finalStats.csv" #variable for capture file
        finalStatsFile = File.open(fname, "w") #write to capture file
fname2 = "weeklyStats.csv"
        weeklyStatsFile = File.open(fname2, "w")    
CSV.foreach('compareData.csv', converters: :numeric) do |row|
    weekly_total << row[0] - row[1]

    weekly_total.each do |data| 
    data << weekly_total.shift 
     weeklyStatsFile.puts data
end 
end

#retrieve stats from original document 
 CSV.foreach("autoCapture.csv") {|row| col_date << row[0]}
 CSV.foreach("autoCapture.csv") …
Run Code Online (Sandbox Code Playgroud)

ruby implicit-conversion

16
推荐指数
1
解决办法
7万
查看次数

获取控制台用户输入为chard,char为char

我在Elixir有一个控制台应用程序.我需要通过按键来解释用户的输入.例如,我需要将"q"视为结束会话的命令,而无需用户明确按" aka回车".

IO.getn/2令人惊讶地等待按下,缓冲输入(我几乎可以肯定,这个缓冲是由控制台本身完成的,但是man stty没有提供任何帮助/标志来关闭缓冲.)

Mix.Utils 使用无限循环隐藏用户输入(基本上每隔1ms向控制台发送退格控制序列)IEx代码包含对标准erlang的调用io,这提供了设置回调的唯一能力Tab(用于自动完成).

我的猜测是我必须使用Port,将它附加到:stdin并生成一个进程来监听输入.不幸的是,我坚持尝试实现后者,因为我需要连接到当前运行的控制台,而不是为其他进程创建一个新端口(因为这里有完美的描述.)

我失去了对我怎么附加一个明显的东西Port到当前进程的:stdin(这是BTW列出Port.list/0)或者我应该已经建立了全3管道架构重定向什么类型来:stdin和任何我的程序要puts:stdout

console port command-line-interface elixir

12
推荐指数
2
解决办法
795
查看次数

如何检查协议是否已实现?

我想知道是否有任何方法可以问Elixir 这个对象是否实现了该协议,类似于obj |> implements(Enumerable)什么?

基本上,我必须区分结构和地图.我目前的解决方案有点难看:

try
  obj |> Enum.each ...
rescue 
  e in Protocol.UndefinedError -> obj |> Maps.keys ...
end
Run Code Online (Sandbox Code Playgroud)

上面的工作,但我更喜欢使用模式匹配,如:

cond do
  obj |> is_implemented(Enumerable) -> ...
  _ -> ...
end
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?可以明确检查对象是否实现了所需的协议?

elixir

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

sinatra路线中的几个可选参数

我需要Sinatra路由以下列方式运行:

GET /list/20/10  # Get 20 items with offset 10
GET /list/20     # Get 20 items with default offset
GET /list        # Get default number of items with default offset
Run Code Online (Sandbox Code Playgroud)

我明白,我可能会将值作为查询传递:

GET /list?limit=20&offset=10
Run Code Online (Sandbox Code Playgroud)

但我想按照上面的描述传递它们.我很确定有一种方法可以向Sinatra/Padrino解释我想做什么,但我现在完全陷入困境.我试过了:

get :list, :map => '/list', :with => [:limit, :offset] {} # 404 on /list
get :list, :map => '/list/*' { puts params[:splat] } # 404 on /list
get :list, :map => '/list/?:limit?/?:offset?' {} # 404 on /list
get :list, :map => '/list' { redirect url_for(:list, …) …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra padrino

9
推荐指数
1
解决办法
8527
查看次数

如何在传递给`instance_exec`时执行proc

问题的灵感来自于这个问题.

Proc::new 有一个选项可以在方法中没有块调用:

Proc::new可以仅在具有附加块的方法内调用没有块,在这种情况下,该块被转换为Proc对象.

proc/ lambdainstance作为代码块传递时,Proc正在创建新实例:

Proc.singleton_class.prepend(Module.new do
  def new(*args, &cb)
    puts "PROC #{[block_given?, cb, *args].inspect}"
    super
  end
end)

Proc.prepend(Module.new do
  def initialize(*args, &cb)
    puts "INIT #{[block_given?, cb, *args].inspect}"
    super
  end
  def call(*args, &cb)
    puts "CALL #{[block_given?, cb, *args].inspect}"
    super
  end
end)

? = ->(*args) { }
[1].each &?
#? [1]
Run Code Online (Sandbox Code Playgroud)

正如人们可能会看到,无论是呼叫Proc::new发生的事情,也没有Proc#initialize和/或Proc#call进行调用.

问题是:ruby如何创建并执行引擎盖下的块包装器?


注意:不要在pry/ irbconsole中测试上面的代码:他们知道有纯粹的执行故障,主要是因为他们修补了procs.

ruby lambda metaprogramming proc

9
推荐指数
1
解决办法
323
查看次数

您的Ruby版本是2.2.4,但您的Gemfile指定为2.3.0?

我正在尝试bundle install使用Git Bash中的ruby项目,但我收到了上述消息.

ruby -v
Run Code Online (Sandbox Code Playgroud)

ruby 2.2.4p230(2015-12-16修订版53155)[i836-mingw32]

gem -v
Run Code Online (Sandbox Code Playgroud)

2.3.0

Ruby的新手让它真的很令人沮丧.我正在尝试http://www.viralrails.com/?p=25下面的项目

ruby rubygems ruby-on-rails

8
推荐指数
1
解决办法
8587
查看次数

Erlang如何从这个二进制<<"a,b,c">>创建一个列表

我有一个二进制<<"a,b,c">>,我想从这个二进制文件中提取信息.

所以我希望有类似A = a,B = b等的东西.我需要一个通用的方法,因为二进制字符串总是会改变.所以它可能是<<"aaa","bbb","ccc">> ......

我试着生成一个列表

二郎:binary_to_list(<< "一", "B", "C" >>)

但结果却得到了字符串.

"ABC"

谢谢.

string binary erlang list

7
推荐指数
1
解决办法
7259
查看次数

在触发器级联运行的单个查询期间,哪些表受到影响

根据MySQL Performance Blog,昨天(5月6日)宣布的新Percona服务器都包括MySQL Audit Plugin的开源版本.

我想要完成的任务是:在一次单个更新查询运行期间记录受级联触发器执行影响的表.E. g.当UPDATE MY_TABLE …执行时,触发器{BEFORE,AFTER}_UPDATE可以更新其他表,可能有自己的触发器等.

目前我使用国内解决方案; 在所有触发器里面我把smth像:

IF (
        SELECT count(*) 
        FROM  `information_schema`.`ROUTINES` 
        WHERE  specific_name = 'my_own_log' 
          AND  routine_schema = 'my_schema'
) > 0 THEN
    CALL my_own_log ('FOO_TRIGGER', 'Hi, I’m to update MY_TABLE') ;
END IF ;
Run Code Online (Sandbox Code Playgroud)

在生产中我没有my_own_log定义过程,因为information_schema表格已经过优化,我不会产生任何性能损失.

问题是我是否可以切换到企业解决方案(上述audit插件)来获取有关哪些表受级联触发器执行影响的信息.JFYI:我在这里找到的唯一类似问题没有提供适用的答案.

谢谢你的任何建议.

mysql sql triggers

7
推荐指数
1
解决办法
197
查看次数