小编iva*_*van的帖子

Rails:Gravatar图片未显示在Chrome中

我正在研究Michael Hartl的Ruby on Rails教程,并且我添加了代码来显示用户的Gravatar图像.它在Firefox和Safari中运行良好,但在Chrome中则不行(图像不会显示).

风景:

#app/views/users/show.html.erb

<% provide(:title, @user.name) %>
<h1>
  <%= gravatar_for @user %>
  <%= @user.name %>
</h1>
Run Code Online (Sandbox Code Playgroud)

和帮手:

#app/helpers/users_helper.rb

module UsersHelper

  # Returns the Gravatar (http://gravatar.com/) for the given user.
  def gravatar_for(user)
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
  end
end
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

google-chrome gravatar ruby-on-rails

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

类中的 ruby​​ 常量范围&lt;&lt; self 块

给定一个红宝石类

class Thing
  class << self
    NUM = 3

    def speak
      NUM.times { puts "Hi!" }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我无法Thing::NUM从课外访问。如果改为

class Thing
  NUM = 3
  class << self
    def speak
      NUM.times { puts "Hi!" }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Thing.speak仍然按预期工作,但我现在也可以访问Thing::NUM. 我知道这个class << self习惯用法打开了对象的单例类,但我很困惑为什么这样定义的类方法可以公开访问而常量不是。

ruby scope private

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

C:为什么我们要包含声明但不定义的头文件?

在较高的层次上,我知道我们使用#include语句使其他文件中的代码可用于当前文件。但我不明白为什么我们要包含一个头文件,其中包含声明但没有定义。

也许我需要更多地了解编译/链接过程才能完全理解其机制,但是是否有一个我一开始就未能掌握的高级概念?

编辑:所有答案都有助于澄清我的问题,归结为:一旦我们通知编译器在其他地方定义了函数,它如何确定在哪里可以找到该定义?

c include header-files

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

C:地址运算符 (&amp;) 是生成指针(地址 + 类型)还是仅生成地址?

我读过的关于地址运算符的大部分内容&,都说它用于获取地址 - 地址。不过,我最近听到它的描述有所不同,因为它产生了一个成熟的指针。

鉴于以下 C 代码,

int i1 = 5;
int *p1;

p = &i1;
Run Code Online (Sandbox Code Playgroud)

我的理解是通过存储存储数据的地址来p1引用 int并记住该位置中的数据将被解释为 an (这决定了要读取的字节数以及如何解释读取的数据)。5i1int

地址运算符是否同时产生地址和“类型感知”,或者类型感知是否只是隐含的,因为它p1被声明为int指针?

让我对此感到疑惑的一件事是看到如下代码:

void myFunc(int *ptr);

int i = 5;
myFunc(&i);
Run Code Online (Sandbox Code Playgroud)

c pointers memory-address

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

Bash function to check if a given variable is set

As explained in this answer, the "right" way to check if a variable is set in bash looks like this:

if [ -z ${var+x} ]; then
    echo "var is unset"
else
    echo "var is set to '$var'"
fi
Run Code Online (Sandbox Code Playgroud)

What I'm interested in is how to extract this into a function that can be reused for different variables.

The best I've been able to do so far is:

is_set() {
  local test_start='[ ! -z ${'
  local test_end='+x} ]'
  local tester=$test_start$1$test_end …
Run Code Online (Sandbox Code Playgroud)

bash

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

tmux:指示文本是否被选择的变量?

Esc我在 Tmux 的复制模式中使用 vi 键绑定,如果有的话,我想明确当前的选择,或者如果没有选择任何内容,则退出复制模式。

bind -T copy-mode-vi Escape if-shell -F '#{selection_active_flag}' \
                                        'send-keys -X clear-selection' \
                                        'send-keys -X cancel'
Run Code Online (Sandbox Code Playgroud)

我希望 Tmux 可以公开一个指示选择状态的变量(我是selection_active_flag为了表达我的意图而编造的,它实际上并不存在),类似于window_zoomed_flag(确实存在)。

有办法实现这一点吗?

key-bindings tmux

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

Rails 3 has_one association:取消关联对象而不破坏它?

我有两节课,MasterSlave.该Master班HAS_ONE slaveSlave类属master.

给定两个关联对象,master_a以及slave_a(slave_a属于哪个master_a),如何在不破坏slave_a数据库的情况下取消链接?我基本上需要"解放" slave_a.我试过了master_a.slave.delete,slave_a从数据库中摧毁了.

我也试过master_a.slave.update_attribute(:master_id, nil),但下次master_a.save打电话,它会重新连接它们.这是否表示我正在忽略的回调(其中大师班有很多),或者我只是使用错误的工具来完成工作?

编辑:我应该指定,我不想销毁任何一个对象,只有这两个特定实例之间的链接.此外,真正的模型实际上并不称为主模型和奴隶模型,这只是我正在使用的一个说明性示例.

ruby-on-rails associations ruby-on-rails-3

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

FFmpeg 可以同时编码多个文件吗?

我正在编写一个 shell 脚本来对给定目录中的音频文件进行编码,并将 .flac 文件输出到另一个目录。我的概念验证逐个循环遍历每个文件,并通过 ffmpeg 运行它。我怀疑有一种方法可以在单个命令中将输入文件的整个列表传递给 ffmpeg,但一直无法弄清楚。

我当前的版本如下所示:

#!/bin/sh

encode_album() {
    local artist=$1; shift
    local album=$1; shift
    local in_dir="${HOME}/Music/raw-imports/${artist}/${album}"
    local out_dir="${HOME}/Music/library/${artist}/${album}"

    mkdir -p "${out_dir}"

    find "${in_dir}" -type f -name *.aiff | while IFS= read -r in_file; do
        local track_name=$(basename "${in_file}" .aiff)
        local out_file="${out_dir}/${track_name}.flac"

        encode_track "${in_file}" "${out_file}"
    done
}

encode_track() {
    local in_file=$1; shift
    local out_file=$1; shift

    </dev/null ffmpeg -i "${in_file}" -codec:a flac "${out_file}"
}

encode_album "Rolf Lislevand" "La Mascarade"
Run Code Online (Sandbox Code Playgroud)

这是可行的,但是我是否需要将这些文件一个接一个地输入 ffmpeg,或者它是否能够接受一批文件并处理它们?

ffmpeg

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

Shell参数扩展:$#vs. $ {#@}

在一个shell脚本,据我所知,$#${#@}相同的行为,既给位置参数的个数.这两者之间是否存在差异?在哪种情况下,哪一种优于另一种?

bash shell parameter-expansion

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