小编jhw*_*ist的帖子

InetAddress.getLocalHost()抛出UnknownHostException

我正在不同的操作系统上测试我们的服务器应用程序(编写的Java),并认为由于良好的Java集成,OpenSolaris(2008.11)将是最不麻烦的.事实证明我错了,因为我最终得到了一个UnknownHostException

try {
  computerName = InetAddress.getLocalHost().getHostName();
  if (computerName.indexOf(".") > -1)
    computerName = computerName.substring(0,
        computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
  e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

输出是:

java.net.UnknownHostException: desvearth01: desvearth01
    at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
Run Code Online (Sandbox Code Playgroud)

但是,nslookup desvearth01返回正确的IP地址,并按预期nslookup localhost返回127.0.0.1.此外,相同的代码在FreeBSD上完美运行.我不知道OpenSolaris有什么特别之处吗?

任何提示都表示赞赏,谢谢.

java freebsd opensolaris

82
推荐指数
3
解决办法
9万
查看次数

在Ubuntu上使用Perforce命令行创建客户端工作区

我正在编写一个脚本来在Ubuntu构建机器上构建所有项目.

每个项目都存储在Perforce中,我使用p4来执行上述操作.

我使用的命令是:

p4 -u <MyUsername> -P <MyPassword> client MyWorkspace
Run Code Online (Sandbox Code Playgroud)

这运行并加载vim,然后我需要执行:wq [Enter]退出.

我可以自动保存或避免加载vim吗?

ubuntu perforce

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

Perforce中其他人签出的文件列表

如何在Perforce中通过用户abc获取所有签出文件的列表?

另外,如何获取所有已检出文件的列表?

perforce

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

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

如何在RoR中向用户显示现有的xml文件

我有一个xml文件,我想显示(渲染)它,因为它是用户,即我想保留标签.我应该怎么做RoR?

我试过了render :file=>"/path/to/file.xml",但标签<product>消失了.

//file.xml
<product>car</product>
Run Code Online (Sandbox Code Playgroud)

更新:我发现该行为依赖于浏览器

  • Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.0.3)Gecko/2008101315 Ubuntu/8.10(强悍)Firefox/3.0.3

    标签保存.

  • Mozilla/5.0(Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.15)Gecko/2009101601 Firefox/3.0.15

    标签消失了.

xml firefox ruby-on-rails render view

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

断言在模拟上没有调用任何方法

我正在使用Flexmock模拟框架用Rspec2编写测试.我希望我的一种方法可以缓存结果,并希望用我的模拟验证这一点.

describe SomeClass do
  before do
    @mock = flexmock()
  end

  after do
    @mock.flexmock_verify()
  end

  it "method caches results"
    c = SomeClass.new(@mock)
    c.method
    @mock.should_receive(:expensive_method).never
    c.method.should == ['A']
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我想确保:expensive_method永远不会被调用,这种方法很有效.但是,我希望我的类能够在:method不调用传入(模拟)类的情况下执行任何操作.有没有办法表达这个?

背景:在我的例子中,注入的类执行昂贵的操作,因此应该为相同的查询缓存结果.

更新
感谢到目前为止的建议,也许我只是假设错误或者我想要的甚至没有意义.我实现缓存的方法是将一个类变量放入SomeClass并添加到:method:

def SomeClass
  @@cache_map = {}

  def method
    # extract key
    return @@cache_map[key] if @@cache_map.has_key?(key)
    # call :expensive_method to get result
    @@cache_map[key] = result
    return result
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,为了测试正确的缓存,我必须:extensive_method至少调用一次来加载缓存.我喜欢David Chelimsky的解决方案,但它没有回答我的原始意图,即:测试在第一次调用SomeClass.method注入类之后再也没有调用(既不是:expensive_method也不是其他).

ruby rspec rspec2

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

collection_select优雅的"select distinct"

我是一个相当新的RoR和黑客攻击一个小应用程序.为了显示表单中某些模型列的现有值,我目前这样做:

<% form_for([@testbox, @testitem]) do |f| %>
  <%= f.label :sortkey %><br />
  <%= f.collection_select :sortkey, Testitem.groups , :sortkey, :sortkey, {:include_blank => true}  %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在模型中Testitem我有:

def Testitem.groups
  return find_by_sql("SELECT DISTINCT sortkey from testitems; ")
end
Run Code Online (Sandbox Code Playgroud)

我相信有更优雅的解决方案吗?我试过find(:all).sortkey.unique但是那个抛出undefined method 'sortkey' for #<Array:0x59d1b60>

ruby-on-rails

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

检查ActiveRecord查询中的nil结果

我在模型中有一些地方可以做类似的事情

  def ServerInfo.starttime(param)
    find(:all, :conditions => "name ='#{param}_started'", :select => "date").first.date.to_datetime
  end
Run Code Online (Sandbox Code Playgroud)

现在,由于与问题无关的原因,可能会发生这个特定行根本不在数据库中,并且上面的代码失败了NoMethodError (undefined method `date' for nil:NilClass):.我目前的解决方案是

    res = find(:all, :conditions => "name ='#{param}_started'", :select => "date")
    check_time = res.first.nil? ? 0 : res.first.date.to_datetime
Run Code Online (Sandbox Code Playgroud)

这可以找到,但我觉得在整个地方撒上代码是不对的.是否有更多的ruby-ish/rail-ish方法来防止解除引用nil?

activerecord ruby-on-rails

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